A full-stack alumni management platform built with React + TypeScript frontend and Node.js + Express + Prisma backend.
As of 2.10.2026, this project is fully deployed and operational exclusively on Render. Local execution is no longer supported due to environment coupling, hosted database constraints, and production-only configuration.
π Live Application: https://alumni-club.onrender.com
All services, including backend API, database, email workflows, and authentication, are bound to the Render hosting environment.
Automated email workflows are presently inactive due to the expiration of the SendGrid free-tier service. The implementation remains intact and can be reactivated upon renewal of email service credentials.
- React 18 with TypeScript
- Vite for fast development
- Tailwind CSS for styling
- React Router for navigation
- React Icons for icons
- Node.js with Express
- TypeScript
- Prisma ORM with PostgreSQL
- JWT for authentication
- bcrypt for password hashing
- CORS for cross-origin requests
- Node.js (v18 or higher)
- PostgreSQL database
- npm or yarn
cd backend
npm install
DATABASE_URL="postgresql://username:password@localhost:5432/alumni_club_dev?schema=public"
PORT=4000
NODE_ENV=development
JWT_SECRET="your_jwt_secret"
PRISMA_LOG_LEVEL=info
SMTP_HOST=smtp.sendgrid.net
SMTP_PORT=587
SMTP_USER=apikey
SMTP_PASS=????????????
FROM_EMAIL=fit.alumni.club@gmail.com
ENROLL_TO=fit.alumni.club@gmail.com
CONTACT_INBOX_EMAIL=fit.alumni.club@gmail.com
VITE_TINYMCE_API_KEY=qkcx67femxnaq01itdjrlnliucc2at403pzwt57aici7njws
npx prisma db pull
npx prisma generate
npx prisma db push
npm run dev
cd frontend
npm install
npm run dev
Login: POST /api/auth/login with username and password
Protected Routes: Admin dashboard requires admin role
Auto-logout: Token expiration after 1 hours
# From backend directory
npx ts-node src/scripts/create-admin.ts
npx ts-node src/scripts/create-admin-interactive.ts
POST /api/auth/login - User login
GET /api/alumni - Get all alumni members
GET /api/alumni/:id - Get specific alumni
GET /api/health - Check API status
backend/
βββ prisma/ # Prisma schema and migrations
βββ src/
β βββ controllers/ # Request handlers (no business logic)
β βββ services/ # Core business logic
β βββ routes/ # Express route definitions
β βββ middlewares/ # Authentication and authorization
β βββ config/ # Configuration files
β βββ utils/ # Helper utilities
β βββ types/ # Shared TypeScript types
β βββ app.ts # Express app setup
β βββ server.ts # Server entry point
βββ uploads/ # User-uploaded files
βββ testing/ # Jest and Supertest tests
Controllers must remain thin
Business logic lives exclusively in services
All database access goes through Prisma
No raw SQL in application code
Core Backend Modules
Authentication and authorization
User profiles with visibility controls
Alumni directory with search and filtering
Blog system with admin approval
One-to-one inbox messaging
Event management with RSVP support
Contact and enrollment email workflows
Administrative control panel
frontend/
βββ src/
β βββ pages/ # Route-level pages
β βββ components/ # Reusable UI components
β βββ services/ # API communication layer
β βββ context/ # Global state management
β βββ assets/ # Static assets
β βββ App.tsx # Route definitions
Pages contain presentation logic only
API calls are isolated in services/
Shared UI lives in components/
Role-based routing is enforced
Data Flow
User logs in
Backend issues a JWT token
Frontend stores the token
Token is attached to API requests
Backend validates token and role
JSON response is returned
UI updates accordingly
Jest and Supertest
Covers authentication, messages, blog, and profile visibility
npm test
Manual QA
Browser DevTools
Role-based UI verification
Environment & Security Notes
.env files must never be committed
Prisma migrations should not be edited manually
Always update schema.prisma first
Upload directories are ignored by git
Extension Points
The architecture supports safe future extensions such as:
Notifications
Group messaging
Advanced admin analytics
Forum enhancements
Event reminders
Extended profile metadata
The project is feature-complete, stable, and ready for handover.
All core systems are implemented, documented, and structured for continued development.
For matters concerning project handover, maintenance, deployment access, or administrative oversight, please contact the current project administrator:
Administrator: AdrianAdrovic-sudo Email: atko.adrovic@gmailc.com
All credentials, hosting configurations, and operational knowledge are held by the administrator. Any future development, service reactivation, or ownership transfer should be coordinated directly through this contact.