-
Notifications
You must be signed in to change notification settings - Fork 0
Use of Standards
This document outlines the core industry standards adopted across our web, mobile, and backend architectures to ensure accessibility, interoperability, security, and maintainability for our mentorship platform.
- Standard Selected: W3C WCAG 2.1 Level AA.
- Why we chose it: The platform must be inclusive and fully functional for all users, including those using assistive technologies. Level AA is the global legal and industry baseline for commercial and educational software.
-
How we plan to integrate it:
-
React (Web): Utilizing
eslint-plugin-jsx-a11yto fail builds if semantic HTML constraints (e.g., missingalttags, improper ARIA roles) are violated. -
React Native (Mobile): Implementing native accessibility bridges using
accessibilityRoleandaccessibilityLabelfor iOS VoiceOver and Android TalkBack compatibility. -
Tailwind CSS: Enforcing a minimum 4.5:1 text-to-background contrast ratio in the Tailwind config and utilizing
focus-visiblevariants for clear keyboard navigation paths.
-
React (Web): Utilizing
-
Standard Selected: W3C HTML5 Semantic DOM and WAI-ARIA (Web Accessibility Initiative - Accessible Rich Internet Applications) 1.2.
-
Why we chose it: Semantic HTML improves SEO and machine readability. ARIA bridges the gap where native HTML falls short in complex Single-Page Applications (SPAs).
-
Also The World Wide Web Consortium (W3C) is essentially unescapable in modern web development, as it defines the fundamental building blocks of the web itself. Core concepts such as semantic HTML, the CSS box and layout models, and the Document Object Model (DOM) are all formal W3C standards. These are not optional features but the very mechanisms that enable structure, styling, and interactivity in our application. Their standardization ensures consistency across browsers, making them both indispensable and highly effective foundations for building robust and scalable web systems.
-
How we plan to integrate it:
-
Semantic HTML Usage: Using structural tags (
<main>,<nav>,<article>,<section>) instead of generic<div>containers in our React components to provide meaningful document structure for both browsers and assistive technologies. -
DOM-Based Interactivity: Leveraging the DOM indirectly through React’s Virtual DOM to efficiently update UI components, manage user interactions (clicks, inputs), and ensure responsive and dynamic page behavior.
-
ARIA for Accessibility: Applying dynamic ARIA attributes (e.g.,
aria-expanded,aria-hidden,aria-live) for custom components like dropdowns, modals, and tabs to communicate state changes to screen readers. -
CSS Box & Layout Model Compliance: Designing layouts using Tailwind CSS utilities that align with the W3C CSS box model (margin, border, padding, content) and modern layout systems (Flexbox, Grid) to ensure consistent rendering across different screen sizes and browsers.
-
Event Handling Standards: Utilizing standardized DOM event mechanisms (e.g.,
onClick,onChange) within React to ensure predictable and consistent interaction behavior across platforms.
-
- Standard Selected: Schema.org vocabularies formatted via W3C JSON-LD (JavaScript Object Notation for Linked Data).
- Why we chose it: Schema.org provides the standard vocabulary to describe our content, while JSON-LD provides the cleanest syntax to embed it without cluttering UI code. This ensures search engines can accurately index our public-facing content.
-
How we plan to integrate it:
-
Frontend Injection: Injecting
<script type="application/ld+json">blocks dynamically into the<head>of public pages using React Helmet or a similar document head manager. -
Vocabularies: We will utilize specific Schema.org types such as
Person(for mentor profiles),EducationalOrganization(for platform data), andEvent(for public webinars or group sessions).
-
Frontend Injection: Injecting
- Standard Selected: RESTful HTTP/1.1 Constraints and the OpenAPI Specification (OAS) 3.0.
- Why we chose it: REST provides a predictable contract between frontend interfaces and the backend database. OpenAPI provides a machine-readable standard for documenting these APIs, reducing friction between backend (Django) and frontend (React/React Native) teams.
-
How we plan to integrate it:
-
Django Backend: Strict mapping of CRUD operations to HTTP methods (
GET,POST,PATCH,DELETE) with standard HTTP status codes. -
Documentation: Using
drf-spectacularin Django to automatically generate an OpenAPI schema, which will render an interactive Swagger UI for developers to test endpoints.
-
Django Backend: Strict mapping of CRUD operations to HTTP methods (
- Standard Selected: IETF RFC 7519 (JSON Web Tokens) and RFC 6749 (OAuth 2.0).
- Why we chose it: Given our decoupled architecture (React Web + Expo Mobile), JWT provides a stateless, scalable, and standardized method for securely transmitting user sessions across different platforms.
-
How we plan to integrate it:
-
Django Backend: Utilizing Django REST Framework (DRF) JWT libraries (like
djangorestframework-simplejwt) to issue signed access and refresh tokens. -
Client Applications: Storing tokens securely and appending them to the
Authorization: Bearer <token>header for all protected requests.
-
Django Backend: Utilizing Django REST Framework (DRF) JWT libraries (like
- Standard Selected: ISO 8601 (Data elements and interchange formats – Information interchange – Representation of dates and times).
- Why we chose it: Mentorship involves scheduling sessions across multiple global time zones. Relying on local time formats in the database or API causes critical scheduling bugs.
-
How we plan to integrate it:
- Backend Storage: Django/PostgreSQL will store all timestamps in UTC.
-
API Transmission: All date/time data sent over the API will be strictly formatted as ISO 8601 strings (e.g.,
2026-04-16T14:30:00Z). -
Frontend Display: The frontend will parse the ISO 8601 string and localize it to the user's current device timezone using standard JavaScript
Intl.DateTimeFormator libraries likedate-fns.
- Standard Selected: PEP 8 (Python) and ECMAScript (JavaScript/TypeScript).
- Why we chose it: Adhering to the official style guides of our respective languages ensures code consistency, reduces cognitive load during code reviews, and prevents bugs.
-
How we plan to integrate it:
-
Django (Python): Enforcing PEP 8 standards using
Flake8andBlackin our pre-commit hooks and CI/CD pipelines. -
React/Mobile (TypeScript): Enforcing ECMAScript conventions and strict type checking using
ESLintandPrettier, catching syntax and style errors before code is pushed.
-
Django (Python): Enforcing PEP 8 standards using
Links: Home | Main Repository
Team Members
- Software Requirements Specification (SRS)
- Requirement Elicitation Questions
- Scenarios: Mentee New Register
- Scenarios: Mentee Already Registered
- Scenarios: Mentor Already Registered
- Use Case Diagram (Initial) - 1
- Use Case Diagram (Initial) - 2
- Use Case Diagram (Initial) - 3
- Use Case Diagram (Final)
- Class Diagram
- Sequence Diagrams
- Final Milestone Deliverables
- Final Project Review
- Final Progress Based on Teamwork
- Final Individual Contributions
- Final Demo Plan
- MVP Deliverables
- MVP Plan
- MVP Demo Plan
- MVP Demo Backup
- MVP Milestone Review
- MVP Feedback Report
- MVP Individual Contributions
- Project Plan
- Communication Plan
- Test Plan & Coverage
- Acceptance Testing Strategy
- Acceptance Tests Checklist
- Last Week Checklist
- Responsibility Assignment Matrix (RAM)
- Use of Standards
- Project Standards & Workflow
- Project Retrospective
- API Documentation
- Knowledge Base