A comprehensive project management system designed to connect students with real-world capstone projects from industry partners. Initially built for Curtin University, with plans for multi-institutional customization.
- Project Discovery: Browse approved capstone projects with advanced filtering by semester, type, and popularity
- Interest Management: Express interest in up to 5 projects with validation and tracking
- Favorites System: Save interesting projects for later review (up to 20 favorites)
- Interactive Dashboard: Track interest history, favorites, and application status
- Secure Authentication: Student-specific login with email validation
- Project Submission: Create and submit detailed project proposals
- Status Tracking: Monitor project approval status (pending, approved, rejected)
- Student Interest Monitoring: View students who have expressed interest
- Project Management: Edit pending projects and resubmit rejected ones
- Organization Dashboard: Comprehensive overview of all submitted projects
- Project Approval Workflow: Review and approve/reject submitted projects
- User Management: Oversee student and client registrations
- Analytics & Reporting: Track system usage and project popularity
- Audit Logging: Complete audit trail of all system activities
- Node.js + Express.js: RESTful API server with comprehensive middleware
- SQLite Database: Lightweight, file-based database with full-text search
- JWT Authentication: Secure token-based authentication for all user types
- Input Validation: Comprehensive validation using express-validator
- Security Middleware: Helmet, CORS, rate limiting, and XSS protection
- Logging System: File and database logging with error tracking
- Vanilla JavaScript: No framework dependencies for maximum compatibility
- Responsive Design: Mobile-first CSS with modern layouts
- Real-time Updates: Dynamic UI updates without page refreshes
- Modal-based Interface: Clean, focused user interactions
- Progressive Enhancement: Works across all modern browsers
- Users: Students, clients, and administrators with role-based access
- Projects: Complete project lifecycle management
- Interests: Student-project relationship tracking
- Favorites: Personal project bookmarking system
- Analytics: Usage tracking and reporting data
- Audit Logs: Complete activity auditing
- Node.js (v14 or higher)
- npm or yarn package manager
-
Clone the repository
git clone https://github.com/michael-borck/capstone-connect.git cd capstone-connect -
Install dependencies
npm install
-
Set up the database
npm run setup
-
Seed with sample data (optional)
npm run seed
-
Start the development server
npm start
-
Access the application
- Open http://localhost:3000 in your browser
- The application will be ready to use!
capstone-connect/
βββ config/
β βββ config.js # Application configuration
βββ database/
β βββ schema.sql # Database schema definitions
β βββ seedData.js # Sample data for development
β βββ db.js # Database connection and methods
βββ middleware/
β βββ auth.js # Authentication middleware
β βββ validation.js # Input validation rules
β βββ security.js # Security middleware
β βββ errorHandler.js # Error handling
β βββ requestLogger.js # Request logging
βββ routes/
β βββ auth.js # Authentication endpoints
β βββ projects.js # Project management
β βββ students.js # Student-specific features
β βββ clients.js # Client dashboard and management
β βββ admin.js # Administrative functions
βββ public/
β βββ css/
β β βββ styles.css # Application styles
β βββ js/
β β βββ app.js # Main application logic
β β βββ auth.js # Authentication handling
β β βββ search.js # Search functionality
β β βββ studentRegistration.js
β β βββ clientRegistration.js
β βββ index.html # Single-page application
βββ utils/
β βββ logger.js # Logging utilities
βββ server.js # Express server setup
βββ package.json # Dependencies and scripts
npm start- Start the production servernpm run dev- Start development server with auto-reloadnpm run seed- Populate database with sample datanpm run backup- Create database backupnpm run export- Export data to JSONnpm test- Run test suite (coming soon)
Create a .env file in the root directory:
NODE_ENV=development
PORT=3000
JWT_SECRET=your-super-secret-jwt-key
DB_PATH=./database/capstone.db
LOG_LEVEL=infoPOST /api/auth/register/student- Student registrationPOST /api/auth/register/client- Client registrationPOST /api/auth/login/student- Student loginPOST /api/auth/login/client- Client loginPOST /api/auth/login/admin- Admin loginPOST /api/auth/logout- Logout (all users)
GET /api/projects- Get all approved projectsGET /api/projects/:id- Get project detailsPOST /api/projects- Create new project (clients)PUT /api/projects/:id- Update projectDELETE /api/projects/:id- Delete project
POST /api/students/interests- Express interest in projectDELETE /api/students/interests/:id- Withdraw interestGET /api/students/interests- Get student's interestsPOST /api/students/favorites- Add project to favoritesGET /api/students/dashboard- Student dashboard data
GET /api/projects/admin/pending- Get pending projectsPATCH /api/projects/:id/status- Approve/reject projectsGET /api/admin/logs- System logsGET /api/admin/analytics- Usage analytics
- JWT Authentication: Secure token-based authentication
- Password Hashing: bcrypt password hashing
- Rate Limiting: Protection against brute force attacks
- Input Validation: Comprehensive server-side validation
- XSS Protection: Content Security Policy and input sanitization
- CSRF Protection: Cross-site request forgery protection
- Audit Logging: Complete activity tracking
- Error Handling: Secure error responses
- β Database setup and architecture
- β Express.js server with comprehensive middleware
- β Three-tier authentication system (students, clients, admins)
- β Project CRUD operations with validation
- β Client registration and project dashboard
- β Student registration and login
- β Project browsing with filters and popularity indicators
- β Project detail modal with full information
- β Favorites functionality for students
- β Interest expression system with 5-project limit validation
- π§ Student dashboard with interest history and favorites
- π§ Interest withdrawal functionality
- π§ Admin portal and management tools
- π Advanced search and analytics
- π Email notifications
- π File upload capabilities
- π Multi-institutional configuration
- π API documentation
- π Comprehensive testing suite
- π Docker containerization
While currently configured for Curtin University (with email validation specific to Curtin domains), the system is designed with multi-institutional deployment in mind. Future versions will include:
- Configurable Institution Settings: Easy setup for any university
- Custom Branding: Institution-specific logos and colors
- Flexible Email Domains: Support for multiple email domain validation
- Tenant Management: Multi-tenant architecture for hosting multiple institutions
- Custom Workflows: Institution-specific approval processes
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built for Curtin University's capstone program
- Designed to bridge the gap between academia and industry
- Inspired by the need for better student-industry collaboration
For support, please contact the development team or create an issue in the GitHub repository.
Built with β€οΈ for connecting students with real-world opportunities