A modern, full-stack web application designed to manage technology bootcamps. This platform facilitates the interaction between Applicants, Instructors, and Employees, streamlining the process of bootcamp creation, application, and management.
This Bootcamp Management System provides a comprehensive solution for managing bootcamp programs with role-based access control. The system supports three distinct user roles:
- ๐จโ๐ Applicants: Browse available bootcamps, submit applications, and track application status
- ๐จโ๐ซ Instructors: Create and manage bootcamps, review applications, and manage participants
- ๐ Employees: Administrative oversight, manage blacklists, and oversee all bootcamp operations
This project is built using Clean Architecture principles to ensure scalability, maintainability, and testability.
- Core: ASP.NET Core 8
- Architecture: Clean Architecture (N-Layer)
Bootcamp.Core- Business logic and interfacesBootcamp.Entities- Domain entitiesBootcamp.Business- Services and DTOsBootcamp.Repositories- Data access layerBootcamp.WebAPI- API controllers and configuration
- Data Access: Entity Framework Core
- Database: PostgreSQL (configurable for SQL Server)
- Authentication: JWT (JSON Web Tokens)
- Logging: Serilog
- Mapping: AutoMapper
- Validation: FluentValidation
- Rate Limiting: Built-in ASP.NET Core rate limiting
- Framework: React 18
- Build Tool: Vite
- Language: TypeScript
- Styling: Modern CSS3 with Glassmorphism design
- State Management: Context API for authentication
- HTTP Client: Axios
- Routing: React Router v6
- โ Secure JWT-based authentication
- โ Role-based access control (RBAC)
- โ Protected routes and API endpoints
- โ Rate limiting on login endpoint
- โ Create, update, delete, and list bootcamps
- โ Bootcamp status tracking (Preparing, Open, Started, Completed)
- โ Date-based bootcamp filtering
- โ Instructor assignment
- โ Browse available bootcamps
- โ Submit applications
- โ Track application status (Pending, Approved, Rejected)
- โ Duplicate application prevention
- โ Blacklist checking
- โ CV/Resume upload for applicants
- โ Modern glassmorphism design
- โ Responsive layouts for all screen sizes
- โ Role-specific dashboards
- โ Toast notifications for user feedback
- โ Loading states and error handling
- โ Smooth animations and transitions
- โ Blacklist management
- โ Application status updates
- โ Bootcamp participant management
- โ View all applications by bootcamp
Follow these instructions to get the project running on your local machine.
- .NET 8 SDK
- Node.js (Latest LTS - v18 or higher)
- PostgreSQL or SQL Server
git clone https://github.com/yourusername/Bootcamp.git
cd BootcampUpdate the connection string in Bootcamp.WebAPI/appsettings.json:
{
"ConnectionStrings": {
"DefaultConnection": "Host=localhost;Database=BootcampDb;Username=postgres;Password=yourpassword"
}
}dotnet restoredotnet ef database update --project Bootcamp.Repositories --startup-project Bootcamp.WebAPIdotnet run --project Bootcamp.WebAPIThe backend API will start on http://localhost:5158
cd frontendnpm installThe API base URL is configured in frontend/src/api.ts:
const API_BASE_URL = 'http://localhost:5158/api';npm run devThe frontend will start on http://localhost:5173
Bootcamp/
โโโ Bootcamp.Core/ # Core business logic and interfaces
โโโ Bootcamp.Entities/ # Domain entities (User, Bootcamp, Application, etc.)
โโโ Bootcamp.Business/ # Services, DTOs, and business rules
โโโ Bootcamp.Repositories/ # Data access layer and DbContext
โโโ Bootcamp.WebAPI/ # API controllers and configuration
โ โโโ Controllers/
โ โโโ Program.cs
โ โโโ appsettings.json
โโโ frontend/ # React frontend application
โโโ src/
โ โโโ components/ # React components
โ โโโ api.ts # API client configuration
โ โโโ AuthContext.tsx # Authentication context
โ โโโ App.tsx # Main application component
โโโ package.json
POST /api/Auth/login- User loginPOST /api/Auth/register/applicant- Register as applicantPOST /api/Auth/register/instructor- Register as instructorPOST /api/Auth/register/employee- Register as employee
GET /api/Bootcamps- Get all bootcampsGET /api/Bootcamps/{id}- Get bootcamp by IDPOST /api/Bootcamps- Create new bootcamp (Instructor only)PUT /api/Bootcamps/{id}- Update bootcampDELETE /api/Bootcamps/{id}- Delete bootcamp
GET /api/Applications- Get all applicationsGET /api/Applications/{id}- Get application by IDPOST /api/Applications- Submit new applicationGET /api/Applications/my-applications/{applicantId}- Get user's applicationsGET /api/Applications/bootcamp/{bootcampId}- Get applications for a bootcampPATCH /api/Applications/status- Update application status
GET /api/Blacklists- Get all blacklisted usersPOST /api/Blacklists- Add user to blacklistDELETE /api/Blacklists/{id}- Remove from blacklist
The application features a modern, premium design with:
- Glassmorphism UI: Frosted glass effect with backdrop blur
- Gradient Backgrounds: Dynamic, vibrant color schemes
- Smooth Animations: Micro-interactions and transitions
- Responsive Design: Mobile-first approach
- Dark Theme: Eye-friendly color palette
- Custom Components: Toast notifications, loading spinners, and more
Configure JWT settings in appsettings.json:
{
"Jwt": {
"Key": "your-secret-key-here-minimum-32-characters",
"Issuer": "BootcampAPI",
"Audience": "BootcampClient",
"ExpiryMinutes": 60
}
}CORS is configured in Program.cs to allow the frontend origin:
builder.Services.AddCors(options =>
{
options.AddPolicy("AllowReactApp",
policy => policy.WithOrigins("http://localhost:5173")
.AllowAnyHeader()
.AllowAnyMethod());
});- Register a new user (Applicant, Instructor, or Employee)
- Upload CV/Resume (for Applicants)
- Login with credentials
- Navigate through the dashboard
- Create a bootcamp (as Instructor)
- Apply to a bootcamp (as Applicant)
- View and manage applications
The following features are planned for future releases:
- Email Notifications: Integration with SMTP for registration and application updates
- Advanced Reporting: Charts and graphs for admin analytics
- Docker Support: Containerization for easy deployment
- Unit & Integration Tests: Comprehensive testing suite using xUnit and Moq
- Profile Management: Allow users to update profiles and change passwords
- Search & Filter: Advanced search capabilities for bootcamps
- Real-time Notifications: WebSocket integration for live updates
- Multi-language Support: i18n for internationalization
- Export Features: Export applications and bootcamp data to CSV/PDF
Implemented CV/Resume upload functionality for applicant registration. Fixed a critical issue where the global Content-Type: application/json header in the frontend API configuration was preventing multipart/form-data processing. The fix involved removing the global header to allow Axios to automatically set the correct Content-Type with boundary parameters for file uploads.
Fixed a critical bug where Instructor and Employee registration was failing with 400 Bad Request errors. The issue was caused by missing dateOfBirth and nationalityIdentity fields required by the backend's UserRequestDto base class. These fields are now properly included for all user types.
This project is licensed under the MIT License - see the LICENSE file for details.
Batuhan Simsar
- Built with Clean Architecture principles
- Inspired by modern bootcamp management needs
- Designed with user experience as a priority
Note: This is a portfolio project demonstrating full-stack development skills with .NET and React.