Your ultimate guide to finding the perfect college
UniCompass is a modern, full-stack college discovery platform that empowers students to explore institutions, compare options, save favorites, and connect with peers through a collaborative Q&A experience. Built with cutting-edge web technologies, UniCompass combines an intuitive interface with powerful features to help students make informed education decisions.
- Advanced search with real-time filtering
- Filter by location, fees, and college type (Government/Private)
- Pagination for seamless browsing
- Detailed college profiles with ratings and statistics
- Compare up to 4 colleges simultaneously
- View courses, placement statistics, and fees side by side
- Make data-driven decisions with visual comparisons
- Save favorite colleges to your personal dashboard
- Quick access to bookmarked institutions
- Organize your college search journey
- Ask questions about colleges and courses
- Get answers from other students and community members
- Real-time discussions and peer insights
- Track questions by college
- User registration and login with email
- JWT-based session management
- Password hashing with bcrypt
- Persistent authentication
- Seamless theme switching
- Persistent user preference
- Eye-friendly interface for all lighting conditions
- Mobile-first approach
- Smooth animations and transitions
- Glass morphism UI components
- Polished gradient-based design system
| Technology | Purpose |
|---|---|
| Next.js 16 | React framework with App Router |
| React 19 | UI component library |
| TypeScript | Type-safe JavaScript |
| Tailwind CSS 4 | Utility-first CSS framework |
| Framer Motion | Smooth animations & transitions |
| Zustand | Lightweight state management |
| Axios | HTTP client for API calls |
| Lucide React | Beautiful icon system |
| js-cookie | Cookie management |
| jwt-decode | JWT token decoding |
| Technology | Purpose |
|---|---|
| Node.js | JavaScript runtime |
| Express.js 5 | Web framework |
| TypeScript | Type-safe JavaScript |
| Prisma ORM 5 | Database abstraction layer |
| PostgreSQL | Production database |
| JWT | Secure authentication |
| bcryptjs | Password hashing |
| CORS | Cross-origin resource sharing |
| Environment | Database |
|---|---|
| Local Development | SQLite (via Prisma) |
| Production | PostgreSQL (Neon) |
UniCompass/
β
βββ π backend/
β βββ src/
β β βββ index.ts # Express app entry point
β β βββ db.ts # Prisma client initialization
β β βββ middleware/
β β β βββ auth.ts # JWT authentication middleware
β β βββ routes/
β β βββ auth.ts # User registration & login
β β βββ colleges.ts # College CRUD operations
β β βββ questions.ts # Q&A functionality
β β βββ saves.ts # Save/bookmark colleges
β βββ prisma/
β β βββ schema.prisma # Database schema
β β βββ seed.ts # Database seeding
β β βββ migrations/ # Migration history
β βββ .env # Local environment variables
β βββ .env.production # Production environment variables
β βββ package.json
β βββ tsconfig.json
β
βββ π frontend/
β βββ src/
β β βββ app/
β β β βββ layout.tsx # Root layout
β β β βββ page.tsx # Home page
β β β βββ colleges/ # College discovery pages
β β β βββ compare/ # College comparison
β β β βββ questions/ # Q&A hub
β β β βββ login/ # Authentication
β β β βββ register/ # User registration
β β β βββ saved/ # Saved colleges
β β β βββ about/ # About page
β β βββ components/ # Reusable components
β β βββ lib/ # Utilities & API client
β β βββ store/ # Zustand store
β β βββ types/ # TypeScript definitions
β β βββ globals.css # Global styles
β βββ .env.local # Local environment variables
β βββ .env.production # Production environment variables
β βββ package.json
β βββ next.config.ts
β βββ tsconfig.json
β
βββ README.md
- Node.js v20 or higher
- npm or yarn
- PostgreSQL database (for production)
git clone https://github.com/angelabera/UniCompass.git
cd UniCompasscd backend
# Install dependencies
npm install
# Generate Prisma client
npx prisma generate
# Run database migrations
npx prisma migrate dev
# Seed the database with sample data
npx prisma db seed
# Start development server
npm run devBackend runs on: http://localhost:5000
Open a new terminal:
cd frontend
# Install dependencies
npm install
# Start development server
npm run devFrontend runs on: http://localhost:3000
Open your browser and navigate to: http://localhost:3000
Backend:
cd backend
npm run buildFrontend:
cd frontend
npm run build
npm startBackend Deployment (Render):
- Push code to GitHub
- Connect GitHub repository to render.com
- Set build command:
npm install && npm run build && npx prisma migrate deploy && npx prisma db seed - Add environment variables:
DATABASE_URL=postgresql://... JWT_SECRET=your-secret-key PORT=3001 NODE_ENV=production - Deploy!
Database Setup (Neon):
- Create free PostgreSQL database at neon.tech
- Copy connection string to
DATABASE_URLin Render
Frontend Deployment (Vercel):
- Connect GitHub to vercel.com
- Select
frontenddirectory - Add environment variable:
NEXT_PUBLIC_API_URL=https://your-render-backend-url - Deploy!
# Dockerfile for backend
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
EXPOSE 3001
CMD ["npm", "start"]- User: Student accounts with authentication
- College: Institution information and metadata
- Course: Programs offered by colleges
- Placement: Placement statistics and data
- SavedCollege: User's bookmarked colleges
- Question: Student questions about colleges
- Answer: Responses to student questions
DATABASE_URL=postgresql://user:password@host/database
JWT_SECRET=your-secure-secret-key
PORT=3001
NODE_ENV=productionNEXT_PUBLIC_API_URL=https://your-backend-url.comPOST /auth/register- User registrationPOST /auth/login- User login
GET /colleges- List all colleges with filtersGET /colleges/:id- Get college detailsGET /colleges/compare- Compare multiple colleges
GET /questions- Get all questionsPOST /questions- Create new questionPOST /questions/:id/answers- Add answer
GET /save- Get saved collegesPOST /save- Save a collegeDELETE /save/:id- Remove saved college
This project is licensed under the ISC License.
Angela Bera
- Built with β€οΈ for students seeking their perfect college
- Inspired by the need for better college discovery tools
- Thanks to all contributors and users!
Happy College Hunting! πβ¨