Project Management
Story Map

Project Plan
https://github.com/UAlberta-CMPUT401/W26project-KAYANOU/issues
Sprint Planning
Sprint 1
Due Date: February 1, 2025
Tasks
| Task | Related US | Assigned To | Due Date |
|---|---|---|---|
| Project Requirements | Documentation | Karan, Sarah, Jimi, Nancy | Feb 1 |
| Software Design | Documentation | Ifan, Zach, Karan, Nancy, Riya | Feb 1 |
| Project Management | Documentation | Sarah, Jimi | Feb 1 |
| Teamwork | Documentation | Completed collaboratively by the entire team | Feb 1 |
Sprint 2
Due Date: February 15, 2025
User Stories
| User Story | Story Points |
|---|---|
| US 4.02 As a user, I want to view all the events in a list organized by location, date, and time, so that I can plan my participation. | 3 |
| US 4.03 As a user, I want to view detailed information about the events, so that I know when and where it is and the intended audience. | 3 |
| US 4.04 As a user, I want to filter events by date, time, location, and intended audience, so that I can choose events based on my interests. | 5 |
| US 4.06 As a user, I want to sign up an account for the website, so that I can login with my email and password. | 2 |
| US 6.02 As a user, I want to request ASL or interpreter services, so that I can attend events without worrying about a language barrier. | 2 |
| US 6.03 As a user, I want to view or request childcare support, so that I am not withheld by my responsibilities. | 2 |
| US 7.01 As an authorized staff member, I want to log in securely to the admin dashboard, so that I can manage website content. | 2 |
| As a developer, I want Dockerized dev and prod environments, so that setup and deployment are consistent across machines. | 5 |
| As a team, I want CI checks and automated staging/production deployment, so that code quality and releases are reliable. | 5 |
| As a platform owner, I want HTTPS and API rate limiting, so that the system is secure and resilient. | 5 |
| Estimated Sprint Velocity: 34 |
Tasks
| Task | Related US | Assigned To | Due Date |
|---|---|---|---|
| Create Dockerfiles for frontend and backend (dev + prod stages) | DevOps | Karan Brar | Feb 4 |
| Create docker-compose.yml for local development (services + networking) | DevOps | Karan Brar | Feb 4 |
| Enable hot reload for local dev (bind mounts + dev commands) | DevOps | Karan Brar | Feb 5 |
| Add production Docker configuration (no bind mounts, optimized commands) | DevOps | Karan Brar | Feb 5 |
| Design database tables for events + admin edits | US 4.02 | Karan Brar | Feb 3 |
| Install and configure NGINX as reverse proxy (frontend + backend) | DevOps | Karan Brar | Feb 6 |
| Configure HTTPS with Let’s Encrypt (Certbot) | DevOps | Karan Brar | Feb 6 |
| Add NGINX rate limiting for API endpoints | DevOps | Karan Brar | Feb 6 |
| Set up GitHub self-hosted runner on server (service + auto-restart) | DevOps | Karan Brar | Feb 6 |
| Configure CI workflows (lint, typecheck, build for FE + BE) | DevOps | Karan Brar | Feb 6 |
| Configure staging deployment (dev → staging) | DevOps | Karan Brar | Feb 6 |
| Configure production deployment (main → prod) | DevOps | Karan Brar | Feb 6 |
| Create backend endpoint(list + sort by location/date/time) | US 4.02 | Riya Salian | Feb 3 |
| Build Events List page UI (list grouped by location/date/time) | US 4.02 | Riya Salian | Feb 4 |
| Connect Events List UI | US 4.02 | Riya Salian | Feb 4 |
| Build Event Details page UI | US 4.03 | Jimi Lin | Feb 6 |
| Connect Event Details UI | US 4.03 | Jimi Lin | Feb 7 |
| Create database tables for accessibility requests (ASL/interpreter) | US 6.02 | Nancy lin | Feb 9 |
| Create ASL/interpreter request form UI | US 6.02 | Nancy Lin | Feb 9 |
| Create database tables for childcare requests | US 6.03 | Nancy lin | Feb 10 |
| Implement admin authentication backend (login session/JWT + roles) | US 7.01 | Karan Brar | Feb 12 |
| Build admin login page UI + route guard | US 7.01 | Ifan | Feb 12 |
| Build admin signup page UI + route guard | US 7.01 | Zach | Feb 12 |
Sprint 3
Due: Mar 8
User Stories
| User Story | Story Points |
|---|---|
| US 1.01 As a user, I want to be able to access the website both on desktop and mobile, so that I can use it on any device. | 3 |
| US 1.02 As a user, I want to view the website in both English & French, so that I can access the information in either language. | 3 |
| US 3.01 As a user, I want to view a list of authors participating in my desired city (Edmonton or Calgary), so that I can discover diverse literary voices. | 3 |
| US 3.02 As a user, I want to see an author's biography, photo, and published works in their profiles, so that I can learn about their background and work. | 3 |
| US 3.03 As a user, I want to filter authors by location, genre, language, or region entered by authors, so that I can easily access the work I'm looking for. | 3 |
| US 3.04 As a user, I want to view a list of books and works with title, description, and author, so that I can learn about the featured works. | 3 |
| US 7.02 As KAYANOU staff, I want a no-code content management interface, so that I can update content without technical knowledge. | 3 |
| US 7.03 As an administrator, I want to add events to the schedule, so that users can view them. | 3 |
| US 7.04 As an administrator, I want to delete events from the schedule, so that users do not attend events that have been canceled. | 3 |
| US 7.05 As an administrator, I want to have a warning message before deleting, editing, or adding an event from the schedule, so that there are fewer clerical errors. | 3 |
| US 7.06 As an administrator, I want to edit events from the schedule, so that users get the most recent information concerning an event. | 3 |
| US 7.07 As an administrator, I want to edit both French and English schedules, so that information in both languages is accurate and updated. | 3 |
Estimated Sprint Velocity: 36
Tasks
| Task | Related US | Assigned To | Due Date |
|---|---|---|---|
| Build responsive layout checklist for key pages (desktop, tablet, mobile) | US 1.01 | Sarah Muir | Feb 18 |
| Update navigation and page spacing for mobile usability | US 1.01 | Jimi Lin | Feb 20 |
| Run cross-device UI regression fixes for core flows | US 1.01 | Nancy Lin | Feb 22 |
| Set up EN/FR content structure for frontend pages | US 1.02 | Karan Brar | Feb 19 |
| Add translated strings for auth, events, and author pages | US 1.02 | Riya Salian | Feb 23 |
| Validate language switch behavior and persistence | US 1.02 | Ifeanyi Uwakwe | Feb 24 |
| Add/verify author city data model and seed data for Edmonton/Calgary | US 3.01 | Zachary Oldford | Feb 20 |
| Create backend endpoint for author list by city | US 3.01 | Karan Brar | Feb 22 |
| Build Authors List page grouped by city | US 3.01 | Nancy Lin | Feb 24 |
| Create backend endpoint for single author profile (bio, photo, works) | US 3.02 | Ifeanyi Uwakwe | Feb 23 |
| Build Author Profile details page UI | US 3.02 | Sarah Muir | Feb 25 |
| Connect author list cards to author detail view | US 3.02 | Jimi Lin | Feb 26 |
| Implement backend filtering for authors (city, genre, language, region) | US 3.03 | Karan Brar | Feb 25 |
| Add author filter controls to UI | US 3.03 | Riya Salian | Feb 27 |
| Persist and restore author filter state | US 3.03 | Nancy Lin | Feb 28 |
| Define books/works schema and author relationship updates | US 3.04 | Zachary Oldford | Feb 24 |
| Create backend endpoint to list books/works with author info | US 3.04 | Ifeanyi Uwakwe | Feb 26 |
| Build books/works listing page and details navigation | US 3.04 | Sarah Muir | Feb 28 |
| Implement admin CMS shell with navigation sections | US 7.02 | Jimi Lin | Feb 27 |
| Add content validation and save feedback for CMS forms | US 7.02 | Nancy Lin | Mar 1 |
| Implement admin API endpoint to add events with validation | US 7.03 | Karan Brar | Feb 27 |
| Build admin Add Event form in dashboard | US 7.03 | Zachary Oldford | Mar 1 |
| Implement admin API endpoint to delete events safely | US 7.04 | Ifeanyi Uwakwe | Mar 1 |
| Add delete action in admin UI and refresh event list | US 7.04 | Sarah Muir | Mar 2 |
| Create reusable warning modal for add/edit/delete actions | US 7.05 | Jimi Lin | Mar 2 |
| Integrate warning modal into event create/edit/delete flows | US 7.05 | Riya Salian | Mar 3 |
| Implement admin API endpoint to edit event details | US 7.06 | Karan Brar | Mar 3 |
| Build admin Edit Event form with prefilled data | US 7.06 | Zachary Oldford | Mar 4 |
| Add EN/FR fields and validation rules to event admin forms | US 7.07 | Ifeanyi Uwakwe | Mar 4 |
| Add language toggle in admin schedule editor | US 7.07 | Nancy Lin | Mar 5 |
| Run QA pass for EN/FR schedule parity across admin and user views | US 7.07 | Sarah Muir | Mar 6 |
Sprint 4
Due: Mar 22
User Stories
| User Story | Story Points |
|---|---|
| US 1.03 As a user, I want to jump to the KAYANOU website, so that I can see what other events they host or services they offer. | 4 |
| US 4.01 As a user, I want to register for the book fair, so that I can participate. | 5 |
| US 6.04 As a user, I want the website to be compliant with WCAG 2.1 standards, so that it is accessible to users with disabilities. | 4 |
| US 7.08 As an administrator, I want to edit both Edmonton and Calgary schedules, so that information in both locations is accurate and updated. | 3 |
| US 7.09 As an administrator, I want to archive past events, so that outdated content does not confuse users. | 3 |
| US 7.10 As an administrator, I want to add new author profiles, so that the directory is up to date. | 3 |
| US 7.12 As an administrator, I want to edit existing author profiles, so that information is accurate and updated. | 3 |
| US 7.13 As an administrator, I want to add new admin profiles, so that the Book Fair team information is up to date. | 3 |
| US 7.15 As an administrator, I want to edit existing admin profiles, so that information is accurate and updated. | 3 |
Estimated Sprint Velocity: 31
Tasks
| Task | Related US | Assigned To | Due Date |
|---|---|---|---|
| Add KAYANOU website link to UI with visible title (not raw URL) linking to KAYANOU | US 1.03 | Sarah Muir | Mar 14 |
| Create database schema and backend endpoint for book fair registration with validation | US 4.01 | Riya Salian | Mar 12 |
| Build registration form UI and display when user selects register option | US 4.01 | Riya Salian | Mar 14 |
| Add registration CTA on user page and success confirmation message after submit | US 4.01 | Riya Salian | Mar 16 |
| Audit key pages for contrast and text size per WCAG 2.1 | US 6.04 | Sarah Muir | Mar 10 |
| Fix contrast and text size to meet WCAG 2.1 standards | US 6.04 | Sarah Muir | Mar 14 |
| Ensure user input fields are well labeled (labels and ARIA where needed) | US 6.04 | Sarah Muir | Mar 16 |
| Add city/location to event model and admin event edit flow (Edmonton vs Calgary) | US 7.08 | Riya Salian | Mar 12 |
| Ensure admin event edit validates required fields and persists by city; verify isolation in UI and DB | US 7.08 | Riya Salian | Mar 14 |
| Add archived status to event model and migration | US 7.09 | Ifeanyi Uwakwe | Mar 10 |
| Implement admin API to mark events archived/unarchived | US 7.09 | Ifeanyi Uwakwe | Mar 12 |
| Exclude archived events from public list and search/filter endpoints | US 7.09 | Ifeanyi Uwakwe | Mar 14 |
| Add archive/unarchive actions and "Archived" labels in admin dashboard | US 7.09 | Ifeanyi Uwakwe | Mar 16 |
| Implement admin API to add author with required-field validation | US 7.10 | Zachary Oldford | Mar 12 |
| Build Add Author form in admin with required fields and validation | US 7.10 | Zachary Oldford | Mar 14 |
| Restrict add-author to admin only; verify new authors in UI and database | US 7.10 | Zachary Oldford | Mar 16 |
| Implement admin API to update author with validation (no blank required fields) | US 7.12 | Zachary Oldford | Mar 14 |
| Build Edit Author form with prefilled data and validation | US 7.12 | Zachary Oldford | Mar 18 |
| Implement admin API to add admin profile with required-field validation | US 7.13 | Nancy Lin | Mar 14 |
| Build Add Admin Profile form in admin and restrict to admins | US 7.13 | Nancy Lin | Mar 18 |
| Verify new admin profile appears in UI and database | US 7.13 | Nancy Lin | Mar 20 |
| Implement admin API to update admin profile with validation (no blank required fields) | US 7.15 | Jimi Lin | Mar 18 |
| Build Edit Admin Profile form with prefilled data and admin-only access | US 7.15 | Jimi Lin | Mar 20 |
| Verify admin profile edits visible to users and required fields enforced | US 7.15 | Jimi Lin | Mar 22 |
| Dev-Ops & Project Mangement tasks | US-D | Karan Brar | Mar 22 |
Sprint 5
Due: 31 Mar
User Stories
| User Story | Story Points |
|---|---|
| US 6.01 As a user, I want to increase the contrast of the website's visual elements, so that I can see the information better. | 4 |
| US 7.11 As an administrator, I want to upload profile images for authors and book covers, so that the profiles are visually engaging. | 3 |
| US 7.16 As an administrator, I want to review accessibility requests from the site inbox, so that accommodations can be planned as needed. | 4 |
| US 7.17 As an administrator, I want SILAB content to be linked to the main KAYANOU archives, so that author contributions are preserved long-term. | 4 |
| US 7.20 As an administrator, I want to delete existing admin profiles, so that outdated or incorrect information is removed. | 2 |
Estimated Sprint Velocity: 17
Tasks
| Task | Related US | Assigned To | Due Date |
|---|---|---|---|
| Audit key pages for contrast and readability; define adjustments (tokens, theme, or component-level fixes) | US 6.01 | Riya Salian | Mar 24 |
| Implement and verify contrast improvements across shared UI (matches WCAG-oriented goals) | US 6.01 | Riya Salian | Mar 28 |
| Add backend and storage flow for author profile images and book covers (upload, validation, URLs) | US 7.11 | Jimi Lin | Mar 24 |
| Build admin UI to upload or replace author photos and work cover images | US 7.11 | Jimi Lin | Mar 28 |
| Expose accessibility / accommodation requests to admins (API or admin views wired to inbox data) | US 7.16 | Nancy Lin | Mar 25 |
| Build admin UI to review accessibility requests and support follow-up workflow | US 7.16 | Nancy Lin | Mar 29 |
| Add SILAB content links to main KAYANOU archives (config, CMS fields, or prominent footer/about links) | US 7.17 | Sarah Muir | Mar 26 |
| Verify archive links in UI and document maintainer steps for updating URLs | US 7.17 | Sarah Muir | Mar 30 |
| Implement admin API to delete admin profiles safely with auth checks | US 7.20 | Jimi Lin | Mar 26 |
| Add delete action for admin profiles in admin UI with confirmation; refresh team listing | US 7.20 | Jimi Lin | Mar 30 |
| Deployment documentation: self-hosted install guide (Docker and/or bare metal), env vars, DB migrations, reverse proxy, HTTPS notes | Deployment rubric | Karan Brar | Mar 31 |
| Deployment documentation: required runtimes, libraries, and versions (Node, Postgres, Prisma, etc.) with install references | Deployment rubric | Karan Brar | Mar 31 |
| Verify staging/production deploy is functional; remove debug/test credentials from defaults and sample env files | Deployment rubric | Karan Brar | Mar 31 |
| End-user manual: task-based guide for guests (schedule, events, authors, registration, contact/ASL, language) | User manual rubric | Zachary Oldford | Mar 31 |
| End-user manual: task-based guide for administrators (login, events, authors, team, schedules, requests) | User manual rubric | Zachary Oldford | Mar 31 |
| Job description: ready-to-publish posting for maintainer (deploy, bugfix, new features) with stack and skills | Job description rubric | TBD | Mar 31 |
| Requirements traceability matrix: update through Sprint 5 (incl. US 7.11); map US → tests → status | Testing rubric | Riya Salian | Mar 29 |
| Static analysis: run SonarQube or similar; summarize findings and fixes or waivers | Testing rubric | TBD | Mar 31 |
| CI/CD: confirm pipeline runs tests and builds; document or fix deploy-on-success for staging/prod | Testing rubric | TBD | Mar 31 |
| Revisions: address open TA feedback from prior sprints (code + docs) | Revisions rubric | Riya Salian | Mar 29 |
| CMPUT 401 portal: project name, tagline, summary, tags, screenshot, logo permission, repo link per client | Portal rubric | Everyone | Mar 31 |
| Teamwork / sprint close: retrospective notes, demo prep, final merge and release checklist | Teamwork | Everyone | Mar 31 |