|
| 1 | +Below is a **clean, corrected, and professional version** of your document with the **Analytics** and **Security tooling (Snyk + Dependabot)** sections properly added. |
| 2 | +I’ve kept the tone suitable for **2025, a student-driven volunteer project**, and something you can confidently include in **reports, approvals, and resumes**. |
| 3 | + |
| 4 | +--- |
| 5 | + |
| 6 | +# 🧱 Technology Stack & Rationale |
| 7 | + |
| 8 | +This document outlines the technologies used in the project and the reasoning behind each choice. The stack is intentionally selected to be **simple, cost-effective, secure, and suitable for a student-driven, volunteer-based team in 2025**. |
| 9 | + |
| 10 | +--- |
| 11 | + |
| 12 | +## Frontend & Backend |
| 13 | + |
| 14 | +### Next.js (Frontend & Backend) |
| 15 | + |
| 16 | +Both the **frontend and backend are built using Next.js**. |
| 17 | + |
| 18 | +**Reasons for choosing Next.js:** |
| 19 | + |
| 20 | +* Simpler development model compared to managing React separately with additional backend frameworks |
| 21 | +* Built-in support for **SEO, Server-Side Rendering (SSR), and fast initial load times** |
| 22 | +* Widely known and adopted by students and developers in **2025** |
| 23 | +* Strong ecosystem with extensive **npm package** support |
| 24 | +* Unified framework reduces architectural complexity and onboarding time |
| 25 | + |
| 26 | +Using Next.js for both frontend and backend allows the team to maintain a **single, consistent technology stack**, which is critical for long-term maintainability in a volunteer project. |
| 27 | + |
| 28 | +--- |
| 29 | + |
| 30 | +## Authentication & Security |
| 31 | + |
| 32 | +### Firebase Authentication |
| 33 | + |
| 34 | +Authentication is handled using **Firebase Authentication**. |
| 35 | + |
| 36 | +**Reasons for choosing Firebase Auth:** |
| 37 | + |
| 38 | +* Free to use within the project’s scope |
| 39 | +* Authentication and security infrastructure is managed by **Google** |
| 40 | +* Supports multiple authentication methods and additional security factors |
| 41 | +* Eliminates the need to implement and maintain custom authentication logic |
| 42 | +* Reduces risks related to **student and user data leakage**, which would be a serious concern |
| 43 | + |
| 44 | +Firebase may also be used for limited storage or related services when appropriate. |
| 45 | + |
| 46 | +--- |
| 47 | + |
| 48 | +## Database |
| 49 | + |
| 50 | +### Neon (PostgreSQL) |
| 51 | + |
| 52 | +The project uses **Neon** as the PostgreSQL database provider. |
| 53 | + |
| 54 | +**Reasons for choosing Neon:** |
| 55 | + |
| 56 | +* Generous **free-tier offering** |
| 57 | +* Fully managed PostgreSQL with modern scaling capabilities |
| 58 | +* Cost-effective for student projects |
| 59 | +* Seamless integration with Next.js and modern JavaScript stacks |
| 60 | + |
| 61 | +This choice aligns with the project’s goal of remaining **free-tier friendly while production-ready**. |
| 62 | + |
| 63 | +--- |
| 64 | + |
| 65 | +## Hosting & Deployment |
| 66 | + |
| 67 | +### Netlify |
| 68 | + |
| 69 | +The application is hosted on **Netlify**. |
| 70 | + |
| 71 | +**Hosting decision background:** |
| 72 | + |
| 73 | +* Initially explored **Cloudflare Workers (Node.js runtime)** |
| 74 | + |
| 75 | + * Dropped due to limitations in full Node.js environment support |
| 76 | + |
| 77 | +* Netlify was selected because: |
| 78 | + |
| 79 | + * Native integration with **GitHub organizations** |
| 80 | + * No requirement to fork repositories into personal accounts |
| 81 | + * Simplified CI/CD and deployment workflows |
| 82 | + |
| 83 | +While platforms like Vercel are popular, **Netlify better fits the team structure, access control needs, and workflow constraints** of this project. |
| 84 | + |
| 85 | +--- |
| 86 | + |
| 87 | +## Testing Strategy |
| 88 | + |
| 89 | +### End-to-End (E2E) Testing |
| 90 | + |
| 91 | +**Playwright** is recommended for E2E testing. |
| 92 | + |
| 93 | +**Reasons for choosing Playwright:** |
| 94 | + |
| 95 | +* Supports modern browser automation |
| 96 | +* Can generate automation scripts from recorded user interactions |
| 97 | +* Lighter and easier to configure than Selenium |
| 98 | +* Suitable for both functional and UI testing |
| 99 | + |
| 100 | +**Alternatives considered:** |
| 101 | + |
| 102 | +* **Selenium** – Industry standard, but heavy and complex |
| 103 | +* **Cypress** – Good option, but setup and configuration can be more opinionated |
| 104 | + |
| 105 | +--- |
| 106 | + |
| 107 | +### Unit & Component Testing |
| 108 | + |
| 109 | +* **Jest** |
| 110 | +* **React Testing Library** |
| 111 | + |
| 112 | +These tools are recommended for unit and component testing. Adoption may increase as team familiarity grows. |
| 113 | + |
| 114 | +--- |
| 115 | + |
| 116 | +## CI / CD |
| 117 | + |
| 118 | +### GitHub Actions |
| 119 | + |
| 120 | +CI/CD is implemented using **GitHub Actions**. |
| 121 | + |
| 122 | +**Reasons for choosing GitHub Actions:** |
| 123 | + |
| 124 | +* Native integration with GitHub repositories |
| 125 | +* Centralized automation within the GitHub ecosystem |
| 126 | +* Matches the current skill level of the team |
| 127 | +* Simplifies automation for: |
| 128 | + |
| 129 | + * Builds |
| 130 | + * Tests |
| 131 | + * Security checks |
| 132 | + * Deployments |
| 133 | + |
| 134 | +--- |
| 135 | + |
| 136 | +## Analytics & Monitoring |
| 137 | + |
| 138 | +### Google Analytics |
| 139 | + |
| 140 | +The project integrates **Google Analytics** for usage and traffic analytics. |
| 141 | + |
| 142 | +**Reasons for choosing Google Analytics:** |
| 143 | + |
| 144 | +* Free and industry-standard analytics platform |
| 145 | +* Provides **real-world usage data** (active users, sessions, engagement) |
| 146 | +* Enables contributors to truthfully state analytics-related experience on their resumes |
| 147 | +* Helps the team make **data-driven decisions** instead of assumptions |
| 148 | + |
| 149 | +Having real production analytics allows contributors to present their experience in a **measurable and verifiable format** (e.g., *“Managed analytics for a production PWA with X monthly users”*). |
| 150 | + |
| 151 | +--- |
| 152 | + |
| 153 | +## Security Tooling |
| 154 | + |
| 155 | +### Dependency & Vulnerability Management |
| 156 | + |
| 157 | +To maintain security without heavy operational overhead, the project integrates: |
| 158 | + |
| 159 | +#### **Dependabot** |
| 160 | + |
| 161 | +* Automated dependency updates |
| 162 | +* Pull requests for vulnerable packages |
| 163 | +* Native GitHub integration |
| 164 | +* Helps keep dependencies up-to-date with minimal manual effort |
| 165 | + |
| 166 | +#### **Snyk** |
| 167 | + |
| 168 | +* Scans for vulnerabilities in: |
| 169 | + |
| 170 | + * npm dependencies |
| 171 | + * Application code |
| 172 | +* Provides clear remediation guidance |
| 173 | +* Acts as an additional security layer beyond Dependabot |
| 174 | + |
| 175 | +These tools help ensure that **security issues are identified early**, which is critical for a publicly accessible student platform. |
| 176 | + |
| 177 | +--- |
| 178 | + |
| 179 | +## Project Management & Collaboration |
| 180 | + |
| 181 | +### GitHub-Native Tooling |
| 182 | + |
| 183 | +The project relies entirely on **GitHub’s ecosystem**: |
| 184 | + |
| 185 | +* **GitHub Issues** – Bug tracking and task management |
| 186 | +* **GitHub Discussions** – Design discussions and community interaction |
| 187 | +* **GitHub Projects** – Planning, roadmaps, and task boards |
| 188 | + |
| 189 | +**Why not Slack, Jira, etc.?** |
| 190 | + |
| 191 | +* This is a **college project with volunteer contributors** |
| 192 | +* External tools introduce unnecessary complexity |
| 193 | +* Such tools require high discipline and constant engagement |
| 194 | +* GitHub provides sufficient functionality while keeping everything centralized |
| 195 | + |
| 196 | +--- |
| 197 | + |
| 198 | +## Guiding Principles Behind Technology Choices |
| 199 | + |
| 200 | +* Free-tier friendly |
| 201 | +* Simple onboarding for new student contributors |
| 202 | +* Secure by default |
| 203 | +* Minimal operational overhead |
| 204 | +* Fully GitHub-integrated workflow |
| 205 | +* Practical and sustainable for a volunteer-driven academic project |
| 206 | + |
| 207 | +--- |
0 commit comments