Strathmore Connects is a full-stack community platform that centralizes communication for Strathmore University clubs and societies. Built with React, Node.js/Express, and MongoDB, it provides role-based access control, post management, nested comments, and notifications. The platform features JWT authentication, Firebase image storage, and automated CI/CD pipelines that run unit tests and deploy to Netlify (frontend) and Render (backend) on every push.
Live Site: strathmoreconnects.netlify.app
Students miss important updates, deadlines, and opportunities because communication is spread across multiple platforms. Email overload is common and students often ignore messages. There is no unified system for:
- Event announcements
- Club membership management
- Community interactions
- Centralized updates
This project solves the communication gap by giving students and club leaders a single structured platform.
- Provide a unified dashboard for all clubs and societies
- Allow students to join, follow, and interact with communities
- Give admins tools to manage posts, comments, and membership
- Support secure authentication with proper access control
- Enable real-time-style updates through a notification system
- JWT-based secure authentication
- Password encryption using bcrypt
- Role-based access control (Student, Admin, Main Admin)
- Protected routes with middleware validation
- Create and delete communities
- Join/leave communities
- Browse all communities
- Admin-controlled community moderation
- Create posts with image uploads (Firebase storage)
- Nested comments and replies
- Delete posts and comments with role validation
- Author-based content ownership
- Automated notifications when communities create posts
- User-specific notification feeds
- Notification management (mark read/delete)
- Automated testing on every push
- Unit tests for backend routes
- ESLint and Prettier checks
- Automatic deployment to Netlify (frontend) and Render (backend)
- GitHub Actions workflow integration
- Unified dashboard for all club activities
- Real-time-style updates
- Responsive design
- Centralized communication hub
POST /signupPOST /loginGET /current(Protected)
POST /createDELETE /:idGET /allPOST /join/:idPOST /leave/:id
POST /createDELETE /:idGET /community/:id
- Postman used for route responses
- JWT expiry tested
- Unauthorized route restrictions tested
- Error handling validated with try/catch
- Password hashing verified
- JWT integrity tested
- Validation for missing fields
- Admins cannot delete content in other communities
- Manual component testing
- State verification using Context API
- Form validation and image uploads tested
- Client (React)
- Server (Express)
- Database (MongoDB)
- Storage (Firebase)
- User interacts with React UI
- Frontend sends requests to Express API
- Middleware validates JWT tokens
- MongoDB stores and returns structured data
- Firebase stores static files
- React renders updated state
GitHub Actions pipeline includes:
- Linting with ESLint
- Formatting with Prettier
- Install dependencies
- Build frontend
- Test backend routes
- Push to Netlify / Render
Planned:
- Backend unit tests
- E2E tests
- Docker support
- Designing secure JWT authentication
- Handling Firebase uploads inside post creation
- Managing state across authentication, posts, communities, and comments
- Handling role-based permissions
- Debugging MongoDB validation errors
- Synchronizing frontend state after backend mutations
- Full-stack web systems from architecture to deployment
- Real authentication patterns using JWT + bcrypt
- Building modular Express routes with middleware
- Structuring MongoDB schemas
- State management strategies in React
- Writing secure APIs
- Planning and diagramming systems (ERD, Use Cases, Sequence)
- Agile iteration and testing cycles
- Rewrite frontend in Next.js
- Rewrite backend in Rust for speed and safety
- Add TypeScript for type safety
- Replace Firebase with unified backend storage
- Add real-time notifications (websockets)
- Implement automated testing
- Add Docker for local dev and deployment
- Improve UI/UX design
Clone repo:
git clone https://github.com/yourusername/yourrepo.git