A production-ready education portal built with React, TypeScript, Material-UI, and NestJS. This project provides a comprehensive platform for college discovery, comparison, and loan applications.
- Authentication: Email/password signup and login with JWT
- College Discovery: Advanced search and filtering with real-time results
- College Comparison: Compare up to 4 colleges side-by-side
- Loan Applications: Multi-step loan application process
- User Dashboard: Track applications, favorites, and comparisons
- Admin Panel: Manage colleges, users, loans, and content
- TypeScript: Full type safety across frontend and backend
- React Query: Efficient server state management with caching
- Material-UI: Modern, responsive UI components
- Error Boundaries: Graceful error handling
- Code Splitting: Lazy-loaded routes for optimal performance
- URL State Sync: Filters and pagination synced to URL
- Toast Notifications: User feedback for all actions
frontend/src/
βββ app/ # App-level components
βββ components/ # Shared UI components
βββ features/ # Feature-based modules
βββ services/ # Centralized API layer
βββ lib/ # Utilities and helpers
βββ types/ # TypeScript definitions
βββ store/ # State management
βββ config/ # Configuration
backend/src/
βββ auth/ # Authentication
βββ colleges/ # College management
βββ loans/ # Loan applications
βββ reviews/ # Reviews system
βββ user/ # User management
βββ static-pages/ # Content management
βββ admin/ # Admin functionality
βββ common/ # Shared utilities
βββ core/ # Core services
- React 19 with TypeScript
- Material-UI for UI components
- React Query for server state
- React Router for navigation
- Axios for HTTP requests
- React Toastify for notifications
- NestJS with TypeScript
- TypeORM for database operations
- MySQL database
- JWT for authentication
- Class-validator for validation
- Winston for logging
- Node.js 18+
- npm or yarn
- MySQL 8.0+
- Git
git clone <repository-url>
cd meraki-connectcd backend
# Install dependencies
npm install
# Create environment file
cp .env.example .env
# Update environment variables
# Edit .env with your database credentials
# Run database migrations
npm run migration:run
# Start development server
npm run start:devcd frontend
# Install dependencies
npm install
# Create environment file
cp .env.example .env
# Update environment variables
# Set REACT_APP_API_BASE_URL to your backend URL
# Start development server
npm start# Database
DB_HOST=localhost
DB_PORT=3306
DB_USERNAME=your_username
DB_PASSWORD=your_password
DB_NAME=meraki_connect
# JWT
JWT_SECRET=your_jwt_secret_key
# Server
PORT=3000
NODE_ENV=developmentREACT_APP_API_BASE_URL=http://localhost:3000
REACT_APP_ENVIRONMENT=developmentservices/apiClient.ts- Centralized HTTP client with interceptorsservices/endpoints.ts- API route constantsservices/modules/*.api.ts- Feature-specific API modules
store/queryClient.ts- React Query configurationlib/hooks/useAuth.ts- Authentication statelib/hooks/useColleges.ts- College data managementlib/hooks/useQueryParams.ts- URL state management
components/ErrorBoundary.tsx- Error handlingcomponents/Layout/- Layout componentscomponents/Auth/- Authentication componentsfeatures/*/components/- Feature-specific components
auth/- JWT authentication and authorizationcolleges/- College CRUD operationsloans/- Loan application managementreviews/- Review systemuser/- User managementstatic-pages/- Content management
core/logger/- Centralized loggingcore/correlation/- Request correlationcore/custom-error/- Error handlingcore/interceptors/- Request/response interceptors
npm run start:dev # Start development server
npm run build # Build for production
npm run start:prod # Start production server
npm run test # Run tests
npm run test:e2e # Run E2E tests
npm run migration:run # Run database migrations
npm run migration:revert # Revert last migrationnpm start # Start development server
npm run build # Build for production
npm test # Run tests
npm run eject # Eject from Create React App- Strict mode enabled
- Comprehensive type definitions
- API response typing
- Consistent code formatting
- TypeScript-aware linting
- Import organization
- Unit tests for services and utilities
- Component tests with React Testing Library
- E2E tests with Playwright (planned)
- Build the application:
npm run build - Set production environment variables
- Run database migrations
- Start the server:
npm run start:prod
- Build the application:
npm run build - Deploy the
buildfolder to your hosting service - Configure environment variables
POST /api/users/signup- User registrationPOST /api/users/login- User loginGET /api/users/me- Get current user profile
GET /api/colleges- List colleges with filtersGET /api/colleges/:id- Get college detailsGET /api/colleges/compare/list- Compare collegesGET /api/colleges/filters- Get available filters
POST /api/loans- Create loan applicationGET /api/loans/me- Get user's loansGET /api/loans/admin- Admin: Get all loansPATCH /api/loans/:id/status- Admin: Update loan status
GET /api/admin/stats- Dashboard statisticsGET /api/admin/users- List usersPUT /api/admin/users/:id- Update userDELETE /api/admin/users/:id- Delete user
- JWT tokens with expiration
- Secure password hashing with bcrypt
- Role-based access control
- Request validation with class-validator
- CORS configuration
- Rate limiting (planned)
- Input sanitization
- XSS protection
- CSRF protection (planned)
- Secure token storage
- Error boundary protection
- Code splitting with React.lazy
- React Query caching
- Image optimization
- Bundle size optimization
- Database query optimization
- Response caching
- Connection pooling
- Logging and monitoring
# Backend
npm run test
# Frontend
npm test# Backend
npm run test:e2e
# Frontend (planned)
npm run test:e2e- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Ensure all tests pass
- Submit a pull request
- Follow TypeScript best practices
- Use meaningful variable and function names
- Add JSDoc comments for complex functions
- Follow the existing code structure
- Database connection failed: Check database credentials and connection
- JWT errors: Verify JWT_SECRET is set correctly
- Migration errors: Ensure database schema is up to date
- API calls failing: Check REACT_APP_API_BASE_URL
- Build errors: Clear node_modules and reinstall dependencies
- Type errors: Run
npm run type-check
- Backend: Set
NODE_ENV=developmentfor detailed logs - Frontend: Use React Developer Tools and browser dev tools
This project is licensed under the MIT License - see the LICENSE file for details.
For support and questions:
- Create an issue in the repository
- Check the documentation
- Review the troubleshooting section
- β Core authentication
- β College listing and search
- β Basic comparison functionality
- β Loan application system
- π Advanced filtering and sorting
- π User reviews and ratings
- π Document upload system
- π Email notifications
- π Mobile app development
- π Advanced analytics
- π Payment integration
- π Multi-language support