diff --git a/README.md b/README.md index 407eff4..454b9b5 100644 --- a/README.md +++ b/README.md @@ -9,15 +9,15 @@ A web-based platform designed to connect, engage, and empower alumni. This proje ## πŸ“„ Software Requirements Specification (SRS) -The formal SRS document is currently being prepared and will be uploaded soon. It will include: +Check out our detailed [Software Requirements Specification](docs/SRS.md) that includes: -- Functional and non-functional requirements -- System architecture -- Feature breakdown -- Technology stack -- Development roadmap - -> πŸ“Œ _The SRS will be available in the `/docs` directory or linked here once published._ +- Complete tech stack (React/TypeScript, Django, PostgreSQL, Redis, etc.) +- Detailed core features (User & Access, Alumni Directory, Events, Jobs, Messaging, etc.) +- Technical architecture and implementation details +- Database schema and API endpoints +- Development requirements and setup instructions +- User roles and permissions +- Development phases and deployment guidelines ## 🌟 Planned Features diff --git a/docs/SRS.md b/docs/SRS.md index e69de29..2db68a3 100644 --- a/docs/SRS.md +++ b/docs/SRS.md @@ -0,0 +1,316 @@ +# AlumniVerse - Software Requirements Specification + +## Project Overview + +**AlumniVerse** is a web-based alumni network management platform built with React/TypeScript frontend and Django REST API backend. + +## Tech Stack + +- **Frontend**: React with TypeScript, Tailwind CSS +- **Backend**: Django with Django REST Framework +- **Database**: MySQL (development), PostgreSQL (production) +- **Authentication**: JWT with optional Multi-Factor Authentication (MFA) +- **Real-time**: WebSockets via Django Channels and Redis for messaging and notifications + +## πŸš€ Core Features + +### πŸ‘€ User & Access + +- Email-based registration and login (JWT) +- Optional multi-factor authentication (MFA) +- Roles: Alumni, Staff, Admin +- Password reset & session timeout + +### πŸ§‘β€πŸŽ“ Alumni Directory + +- Rich profiles (education, work, location) +- Filtered search + map view +- Connection requests & privacy settings + +### πŸ“… Events + +- Host online/offline events +- Register, track attendance, and integrate calendars +- Support for paid events (Stripe/PayPal) + +### πŸ’Ό Jobs & Careers + +- Post jobs, apply, and upload resumes +- Set alerts and book career sessions +- Track certifications and skills + +### πŸ’¬ Messaging + +- Real-time 1:1 and group chat (WebSockets) +- File sharing, search, and message history +- Forums with moderation tools + +### πŸ“š Learning & Mentorship + +- Enroll in courses, track progress +- Get certifications +- Match with mentors and follow learning paths + +### πŸ’° Donations + +- One-time or recurring donations +- Campaigns and receipt generation + +### πŸ“Š Analytics + +- User activity and event insights +- Custom reports and dashboards +- Fundraising and donation metrics + +## πŸ”§ Technical Overview + +### πŸ’» Frontend (What users see) + +- Built with modern tools (React, TypeScript) for a fast and smooth experience +- Works well on phones, tablets, and computers +- Clean and responsive design using Tailwind CSS +- Forms, buttons, and pages that update quickly and feel like an app + +### 🧠 Backend (What powers the system) + +- Built with Django (Python) to handle logic, data, and security +- Uses an API system so frontend and backend can talk to each other +- Handles login, user roles, events, messages, and more +- Includes admin panel to manage users, jobs, events, etc. + +### πŸ” Security + +- Passwords are safely encrypted +- Login uses secure tokens (JWT) +- Optional two-step verification for better protection +- Private data is kept safe and only visible to the right users + +### πŸ’¬ Real-Time Messaging + +- Users can chat instantly β€” like WhatsApp or Messenger +- System uses WebSocket technology to send and receive messages live +- Group chats and file sharing are also supported + +### πŸ—ƒοΈ Database + +- Stores all information (users, messages, jobs, etc.) in a structured way +- Uses MySQL during development and PostgreSQL in live servers + +### πŸ’Έ Payments & Events + +- Supports paid event registrations and donations (via Stripe or PayPal) +- Sends confirmation emails after payments +- Can sync with Google or Outlook Calendar + +### πŸ“Š Dashboard & Reports + +- Admins can view analytics like: + - Active users + - Event attendance + - Job applications + - Donation totals +- Reports can be downloaded when needed + +### πŸš€ Deployment & Hosting + +- Runs on reliable servers using modern web hosting tools +- Sends emails, handles chat, stores files, and keeps things running smoothly + +### Database Schema (Key Entities) (Subjected to Change) + +``` +Users: id, email, password_hash, role, created_at, updated_at +Profiles: user_id, first_name, last_name, bio, location, graduation_year +Events: id, title, description, date, capacity, location, event_type +Jobs: id, title, company, description, requirements, salary_range +Messages: id, sender_id, recipient_id, content, timestamp +Donations: id, user_id, amount, campaign_id, payment_status +``` + +### API Endpoints (Core)(Can be Added/Modified) + +``` +Authentication: +POST /api/auth/login +POST /api/auth/register +POST /api/auth/refresh + +Alumni Directory: +GET /api/alumni?filters +GET /api/alumni/{id} +PUT /api/alumni/{id} + +Events: +GET /api/events +POST /api/events +POST /api/events/{id}/register + +Jobs: +GET /api/jobs +POST /api/jobs +POST /api/jobs/{id}/apply + +Messages: +GET /api/messages +POST /api/messages +WebSocket: /ws/chat/ + +Donations: +POST /api/donations +GET /api/donations/history +``` + +## πŸ§‘β€πŸ’» Development Requirements + +### πŸ’» System Requirements + +- **Operating System**: Linux (recommended because I use that πŸ˜‚), macOS, or Windows (WSL works well) +- **Python**: 3.10 or later +- **Node.js**: 18 or later (required for React + Vite) +- **npm** or **pnpm**: Latest stable version +- **MySQL**: 8.x (for development) +- **PostgreSQL**: 14+ (optional, for production testing) +- **Redis**: 6.x or later (for WebSocket and caching) +- **Docker** (optional): For containerized development + +--- + +### πŸ”§ Development Tools + +- **Code Editor**: VS Code or Neovim (with your favorite plugins) +- **Version Control**: Git + GitHub +- **API Testing & Documentation**: Swagger or Django REST Framework’s built-in documentation UI +- **Browser DevTools**: Chrome or Firefox (for frontend debugging) + +### πŸ“¦ Backend Setup (Django) + +- Create and activate virtual environment +- Install dependencies via `pip` or `uv` +- Set up `.env` file with: + - `SECRET_KEY` + - `DEBUG` + - `DB_CONFIG` (MySQL/Postgres) + - `REDIS_URL` + - `EMAIL_CONFIG` +- Run database migrations: `python manage.py migrate` +- Start development server: `python manage.py runserver` + +### πŸ’» Frontend Setup (React + Tailwind) + +- Navigate to the frontend directory +- Install dependencies: `npm install` or `pnpm install` +- Start dev server: `npm run dev` +- Tailwind is pre-configured using `postcss` and `autoprefixer` +- Axios is used to connect to the backend API + +### πŸ”„ Real-time Features + +- Redis server must be running locally +- WebSocket is enabled via Django Channels +- Use `daphne` or `uvicorn` for running ASGI app in dev +- Configure CORS and allowed origins for frontend-backend communication + +### πŸ§ͺ Testing & Linting + +- Django tests: `python manage.py test` +- React tests: `npm run test` +- Linting: + - Python: `ruff` or `flake8` + - JavaScript/TS: `eslint` + `prettier` +- Git pre-commit hooks (optional): Set up using `pre-commit` + +### 🐳 Docker (Optional Dev Workflow) + +- Dockerfile and `docker-compose.yml` included +- Run full stack with: `docker-compose up` +- Supports live-reloading in both frontend and backend + +### πŸ“ Other Requirements + +- Keep code modular and reusable +- Follow project naming conventions and folder structure +- Write docstrings, comments, and maintain clean commits +- Regularly pull and merge from the main branch + +--- + +> βœ… Tip: Use a `.env.example` file to share config structure with the team. + +## User Roles & Permissions (Will be Added/Modified) + +**Alumni:** + +- View/edit own profile +- Search directory +- Register for events +- Apply for jobs +- Send messages +- Make donations + +**Staff:** + +- Manage events +- Moderate content +- View analytics +- Manage job postings + +**Admin:** + +- Full system access +- User management +- System configuration +- Analytics access + +## Development Phases + +**The development will be divided into the following phases:** +**Most of the process may not be possible to cover all the phases** + +### 1. Planning & Requirement Analysis + +- Finalize feature list and project scope +- Define user roles and access levels +- Design database schema and API endpoints +- Prepare wireframes and UI mockups + +### 2. Backend Development (Django) + +- Set up Django project with REST Framework and Channels +- Implement user authentication (JWT + MFA) +- Build core APIs for Alumni Directory, Events, Jobs, Messaging, etc. +- Integrate Redis for caching and WebSocket support +- Write unit tests for backend functionality + +### 3. Frontend Development (React + Vite + Tailwind) + +- Initialize React project with TypeScript and Tailwind CSS +- Build reusable UI components aligned with wireframes +- Connect frontend to backend APIs using Axios +- Implement real-time messaging via WebSocket connection +- Add client-side validation and error handling +- Write frontend tests for critical components + +### 4. Integration & Testing + +- Test full user flows end-to-end (registration, messaging, events) +- Perform cross-browser and responsiveness testing +- Fix bugs and optimize performance +- Use Swagger or DRF docs to validate API contracts + +### 5. Deployment & Monitoring (It May not be Possible to cover all the steps in this phase) + +- Prepare production environment (PostgreSQL, Redis, Docker) +- Deploy backend and frontend (e.g., on VPS, cloud provider) +- Set up SSL, domain, and environment variables +- Monitor logs and app performance post-deployment +- Collect user feedback for future improvements + +--- + +> πŸ”‘ Tip: Follow Agile iterations with regular commits, code reviews, and testing in each phase for smoother delivery. + +--- + +**Document Version:** 0.1 +**Last Updated:** June 15, 2025 +**Target Audience:** Development Team