- Mission Statement
- Features
- Technical Implementation
- Target Audience
- Back-end Implementation
- Front-end Implementation
The goal for the Ping Penguins is to build a web-based application for Emma from Crowdbloom to facilitate workshops, where participants can collaborate on a virtual project board using sticky notes. The application will consist of a Django backend and a React frontend, with clearly defined responsibilities between the two.
- Admins can create and manage workshop boards for collaborative projects.
- Participants register and join using a unique link to the workshop board (UID).
- Participants can contribute to boards by:
- Posting sticky notes.
- Editing sticky notes.
- Deleting sticky notes.
- Sticky notes are categorised into predefined sections.
- The platform ensures:
- Secure access.
- Engagement.
- A user-friendly experience.
User Type | Access Rights | Example Roles |
---|---|---|
Admin | Full access to create/manage workshops, boards, users, and sticky notes. Export and analyse board data. | Crowdbloom facilitators |
Participant | Register and log in using a project code. Post, edit, or delete sticky notes and view workshop boards. | Workshop attendees |
Feature | Details | Notes |
---|---|---|
Create | Participants can create sticky notes with a comment (max 160 characters). | Default colours: Primary hues aligned with the thematic palette |
Edit/Delete | Participants can edit or delete their notes post-submission. | Notes are linked to the user via user ID in the backend database. |
Display | Notes are categorised into predefined columns on the board. | Board categories are defined during project creation. |
colours | Magenta, Black, Off-White, Light Gray. | Additional colour options to be tested with the client during build. |
Feature | Details | Notes |
---|---|---|
Unique Link/Code | Generated for each workshop. Participants use the project code to access the board. | Back-end uses UID (Unique Identifier) to provide a secure link. |
Board Access | Boards become accessible at the workshop start time and remain active until the workshop ends. | Access policies can be updated by the Admin. |
Pages | Functionality | Notes |
---|---|---|
Landing Page | - Workshop Details - Link to crowdbloom website - Disclosure - Button to Login/Signup |
- Unique link generated for each workshop |
Signup Page | - Email - Username - Password - Sign Up button |
"Already have an account? Login here" button |
Login Page | - Username - Password - Log In button |
"Don't have an account? Sign up here" button |
Workshop Page | - Categories - View live sticky notes - Create/post sticky notes |
- Countdown feature - Boards becomes accessible at the workshop start time and remains active until the workshop ends |
Admin Dashboard Page | - Create workshop - Recent workshops - Delete workshop |
Requires auth |
Custom 404 Page | Provides a clear message to users that the requested page is unavailable | pink penguin? |
- Link to project code expires after a set period of time.
- Real-time board updates without page reload.
- Notes data exports to Excel.
- Custom colour palette for sticky notes.
- Countdown Timer is displayed on the board showing the time remaining until the workshop begins.
- Automatically generated QR codes for workshop links.
- Admin defines the maximum number of sticky notes each user can create per board.
- Framework: Django
- Responsibilities: User registration, authentication (token-based), project management, board data storage, permissions and role management.
- Error Handling: Appropriate HTTP error codes (e.g., 400, 403). Custom error messages as needed.
- Framework: React
- Responsibilities: Interactive UI for workshop setup, user registration/login, and sticky note functionality.
- Design: Bright, professional UI with responsive design for mobile and desktop.
- Back-End: Deployed on Heroku.
- Front-End: Deployed on Netlify.
- Version Control: GitHub repositories.
- Facilitators and Admins: Crowdbloom team members responsible for managing workshops.
- Participants: Workshop attendees who collaborate on boards and share their comments via notes.
HTTP Method | URL | Purpose | Request Body | Successful Response Code | Authentication and Authorisation |
---|---|---|---|---|---|
GET | /board/ |
Returns all boards for the Admin | 200 | Admin ONLY | |
POST | /board/ |
Creates a new board | 201 | Admin ONLY | |
GET | /board/int:pk/ |
Returns project with INT ID | 200 | Auth token matches accessed_user ID & Admin | |
PUT | /board/int:pk/ |
Edits an existing Board | 200 | Admin ONLY | |
DELETE | /board/int:pk/ |
Permanent cascade deletion of board and all notes | 202 | Admin ONLY | |
GET | /notes/ |
Returns all notes | 200 | Auth token matches accessed_user ID & Admin | |
POST | /notes/ |
Creates new note | 201 | Auth token matches accessed_user ID & Admin | |
GET | /notes/int:pk/ |
Returns note with INT ID | 200 | Auth token matches accessed_user ID for board & Admin | |
PUT | /notes/int:pk/ |
Edits an existing Note | 200 | Note Owner &/Admin | |
DELETE | /notes/int:pk/ |
Permanent delete of note | 202 | Note Owner &/Admin | |
POST | /users/ |
Creates new User | 201 | Unique Username and Email address | |
GET | /users/ |
Returns list of all Users | 200 | Admin ONLY | |
GET | /users/int:pk/ |
Returns User details for INT ID | 200 | Auth Token for User & Admin | |
PUT | /users/int:pk/ |
Edits User details with INT ID | 200 | Auth Token for User & Admin | |
DELETE | /users/int:pk/ |
Permanent cascade deletion of User and all notes | 202 | Admin ONLY | |
POST | /api-token-auth/ |
Creates a JWT for User | Provide correct username and password | 201 |
Field | Data Type |
---|---|
id | integer |
password | hash |
last_login | timestamp |
is_superuser | bool |
username | text |
first_name | text |
last_name | text |
company | text |
role_title | text |
tenure | integer |
is_staff | bool |
is_active | bool |
date_joined | timestamp |
Field | Data Type |
---|---|
id | integer |
title | text |
description | varchar |
date_start | timestamp |
accessed_users | key |
column_number | int |
category_titles | array |
disclaimer | text |
UID | key |
Field | Data Type |
---|---|
id | integer |
comment | varchar |
anonymous | bool |
board_id | key |
owner_id | key |
Click this link to see the live Demo on Figma
Landing Page
Create Profile
Project Board
Admin Dashboard
User Dashboard
Create New Project
Logo
Logo TBU
Design Options