-
Notifications
You must be signed in to change notification settings - Fork 0
Final Status of Requirements
Beyza Nur Deniz edited this page May 16, 2026
·
2 revisions
| Requirement | Status | Evidence |
|---|---|---|
1.1.1.1 The application shall allow users to upload pre-recorded historical photographs, videos, and audio from the device's gallery. |
Completed | We implemented authenticated media upload through POST /stories/{story_id}/media in backend/app/routers/story.py. We validate uploaded media types and file sizes in backend/app/services/media_validation.py, and we cover image, audio, and video upload cases in backend/tests/api/test_story_api.py. |
1.1.2.1, 1.2.2.1, 1.2.2.3, 1.2.2.4
|
Completed | We implemented story-to-map binding through latitude/longitude fields and interactive marker rendering. The backend location and story validation are defined in backend/app/models/story.py, while the map interface is implemented in frontend/map.html. Marker previews, map interaction, and zoom controls are all part of the delivered interface. |
1.1.3.1, 1.1.3.1.1, 1.1.3.1.2, 1.1.3.1.3, 1.1.3.1.4, 1.1.3.2, 1.1.3.3
|
Completed | We implemented the core story creation workflow in backend/app/routers/story.py and backend/app/models/story.py. Users can create posts with title, content, location, and historical date or date range. The story creation interface is implemented in frontend/story-create.html, and the flow is covered by backend/tests/api/test_story_api.py and backend/tests/integration/test_story_flow.py. |
1.1.3.1.5, 1.2.2.5
|
Completed | We implemented multi-location story support. The request/response models include locations in backend/app/models/story.py, and map-side normalization and rendering are implemented in frontend/multi-location.js and frontend/map.html. We also cover this flow in backend/tests/integration/test_story_location_flow.py. |
1.1.4.1, 1.1.4.2, 1.2.4.1, 1.2.4.1.1, 1.2.4.2
|
Completed | We implemented registration and login using username, email, and password in backend/app/routers/auth.py and backend/app/services/auth_service.py. We enforce email uniqueness and authenticated/unauthenticated access separation in the same backend layer. These flows are covered in backend/tests/api/test_auth_api.py and frontend/tests/uat/auth.spec.js. |
1.2.4.1.2 E-mail addresses shall be confirmed. |
Not Started | We did not implement an email confirmation workflow in the final release. Our authentication flow supports registration, login, and Google sign-in, but does not yet include email verification tokens or a confirmed-email state. |
1.2.4.1.3 The system must provide a Google account sign-in option as an alternative to email registration. |
Completed | We implemented Google OAuth login in backend/app/routers/auth.py and backend/app/services/auth_service.py through /auth/google/login and /auth/google/callback. On the frontend, the callback flow is handled by frontend/oauth-callback.html, and the delivered flow is covered in frontend/tests/uat/auth.spec.js and backend/tests/api/test_auth_api.py. |
1.2.4.1.4 The system must automatically generate a username suggestion from first and last name during sign up. |
Not Started | We did not implement this requirement in the final release. Our registration page in frontend/register.html asks the user to enter a username directly, and our backend registration model expects an explicit username. |
1.1.5.1, 1.1.5.2, 1.1.5.3, 1.1.5.4, 1.2.6.1
|
Completed | We implemented comments, likes, public viewing, and saved stories. Backend endpoints are defined in backend/app/routers/story.py, while frontend integrations are implemented in frontend/comments.js, frontend/likes.js, and frontend/saves.js. These flows are covered by backend/tests/integration/test_story_comment_flow.py, backend/tests/integration/test_story_like_flow.py, and backend/tests/integration/test_story_save_flow.py. |
1.1.6.1, 1.1.6.2, 1.1.6.3, 1.1.6.4
|
Completed | We implemented search and filtering through GET /stories and GET /stories/search in backend/app/routers/story.py, with support for place-based search, date filtering, tag-based filtering, and location-oriented discovery. The user-facing search/filter interface is implemented in frontend/search.html and frontend/search-filters.js, and backend coverage exists in backend/tests/api/test_story_api.py. |
1.1.7.1 Authenticated users must have access to a personal dashboard where they can see view counts for each of their published stories. |
Completed | We implemented dashboard and engagement endpoints in backend/app/routers/users.py and backend/app/services/user_service.py, including view-count statistics. The feature is covered in backend/tests/api/test_user_dashboard_api.py, and corresponding UI/UAT support exists in frontend/tests/uat/dashboard.spec.js. |
1.1.8.1, 1.2.8.1
|
Completed | We implemented anonymous story sharing in both backend and frontend layers. The story models include is_anonymous in backend/app/models/story.py, masking behavior is handled in backend/app/services/story_service.py, and frontend display logic is implemented in frontend/anonymous.js. We also test this behavior in frontend/anonymous.test.js and backend unit tests. |
1.1.9.1, 1.2.9.1
|
Completed | We implemented the timeline view through GET /stories/timeline in backend/app/routers/story.py, with both coordinate-based and place-name-based scoping. The web UI is implemented in frontend/timeline.html, and entry points to the timeline appear in frontend/map.html and frontend/story-detail.html. We cover the API behavior in backend/tests/api/test_story_api.py. |
1.2.1.1, 1.2.1.1.1
|
Completed | We implemented in-app recording and transcript review support. The recording interface is part of frontend/story-create.html; transcript preview is provided through POST /transcription/preview in backend/app/routers/transcription.py; and transcription logic is implemented in backend/app/services/transcription_service.py. This workflow is covered in frontend/tests/uat/media.spec.js. |
1.2.2.2 The application shall execute geospatial queries to display “Stories near me”. |
Completed | We implemented nearby-story discovery through GET /stories/nearby in backend/app/routers/story.py, backed by geospatial query logic in the service layer. The map interface uses this feature in frontend/map.html, and the API behavior is covered in backend/tests/api/test_story_api.py. |
1.2.3.1 The system shall allow users to report posts; admins can review reports, remove posts, and restrict posters. |
Completed | We implemented story reporting in backend/app/routers/story.py and admin moderation endpoints in backend/app/routers/admin.py. This includes listing reports, updating report status, removing stories, and restricting/unrestricting users. We cover these flows in backend/tests/integration/test_story_report_flow.py and backend/tests/integration/test_admin_user_restriction_api.py. |
1.2.3.2 The system must display a First Post badge after the user's first successful post. |
Completed | We implemented badge awarding in backend/app/services/badge_service.py and expose badge data through profile/dashboard flows. On the frontend, badge display is implemented in frontend/profile.js, and the first-post badge unlock modal is implemented in frontend/story-create.html. We also cover this scenario in frontend/tests/uat/badge.spec.js. |
1.2.5.1, 1.2.5.2, 1.2.7.7, 1.2.7.8
|
Completed | We enforce authenticated media upload, reject unauthenticated upload attempts, and persist uploaded media in object storage with linked database records. This behavior is implemented in backend/app/routers/story.py, backend/app/services/media_validation.py, and the related persistence/service layer, and it is covered by backend API tests. |
1.2.7.1, 1.2.7.2, 1.2.7.3, 1.2.7.4, 1.2.7.5, 1.2.7.6
|
Completed | We persist each story with creator identity, required-field validation, post-submission visibility, unique identifiers, and authenticated ownership linkage. This behavior is implemented in backend/app/models/story.py, backend/app/services/story_service.py, and backend/app/routers/story.py, with supporting API and integration tests. |
2.1.1.1, 2.2.1.1
|
Completed | We delivered a responsive web application and prepared a Capacitor-based Android mobile application. The repository includes Android build configuration in frontend/android, Capacitor integration in frontend/capacitor.config.json, mobile build scripts in frontend/package.json, and mobile setup/testing instructions in frontend/tests/mobile-e2e/README.md. The release workflow also packages an Android debug APK in .github/workflows/release.yml. |
2.1.2.1 The timeline visualization must render changes in under 2 seconds on a standard 1000 Mbits/s internet connection. |
In Progress | We implemented the timeline feature and performed query/performance work, including load/performance-related documentation in backend/tests/load/README.md. However, we do not present a final repository-level benchmark artifact that formally verifies the exact <2 seconds target under the stated condition. |
2.2.2.1 User passwords shall meet safety criteria. |
Completed | We implemented password strength validation in backend/app/models/user.py, requiring uppercase, lowercase, digit, and special characters. We also cover this logic explicitly in backend/tests/unit/test_password_validation.py. |
2.2.3.1 The application shall allow content upload related to/from all parts of the world. |
Completed | We designed the story model to accept arbitrary coordinates and place names rather than restricting uploads to a fixed region. This support is visible in backend/app/models/story.py, the story creation flow in frontend/story-create.html, and the map/location-based browsing features delivered across the platform. |
2.2.4.1 The application shall validate file sizes upon upload and reject files exceeding the defined limit. |
Completed | We implemented upload size validation and 413 handling in backend/app/services/media_validation.py, backend/app/services/auth_service.py, and backend/app/routers/transcription.py. This applies to story media, avatar uploads, and transcription preview uploads, and is covered by backend API tests such as backend/tests/api/test_transcription_api.py. |
Team Members
- Lab 1 Report (12/02/2026)
- Lab 2 Report (19/02/2026)
- Lab 3 Report (26/02/2026)
- Lab 4 Report (05/03/2026)
- Lab 5 Report (12/03/2026)
- Lab 6 Report (26/03/2026)
- Lab 7 Report (02/04/2026)
- Lab 8 Report (16/04/2026)
- Lab 9 Report (30/04/2026)
- Lab 10 Report (07/05/2026)
- Weekly Meeting 1 (14.02.2026)
- Weekly Meeting 2 (21.02.2026)
- Weekly Meeting 3 (28.02.2026)
- Weekly Meeting 4 (07.03.2026)
- Weekly Meeting 5 (14.03.2026)
- Weekly Meeting 6 (19.03.2026)
- Weekly Meeting 7 (28.03.2026)
- Weekly Meeting 8 (05.04.2026)
- Weekly Meeting 9 (11.04.2026)
- Weekly Meeting 10 (18.04.2026)
- Weekly Meeting 11 (02.05.2026)
- Weekly Meeting 12 (09.05.2026)
- Customer Meeting 1 (18.02.2026)
- Stakeholder Meeting 1 (09.03.2026)
- Milestone Review Meeting (05.04.2026)
- MVP Test Meeting (08.04.2026)
- Customer Meeting 2 (30.04.2026)