Skip to content

batuhansimsar/Bootcamp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

40 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿš€ Bootcamp Management System

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.

License .NET React TypeScript

๐ŸŽฏ Overview

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

๐Ÿ› ๏ธ Technology Stack

This project is built using Clean Architecture principles to ensure scalability, maintainability, and testability.

Backend (.NET 8 Web API)

  • Core: ASP.NET Core 8
  • Architecture: Clean Architecture (N-Layer)
    • Bootcamp.Core - Business logic and interfaces
    • Bootcamp.Entities - Domain entities
    • Bootcamp.Business - Services and DTOs
    • Bootcamp.Repositories - Data access layer
    • Bootcamp.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

Frontend (React + TypeScript)

  • 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

โœจ Features

Authentication & Authorization

  • โœ… Secure JWT-based authentication
  • โœ… Role-based access control (RBAC)
  • โœ… Protected routes and API endpoints
  • โœ… Rate limiting on login endpoint

Bootcamp Management

  • โœ… Create, update, delete, and list bootcamps
  • โœ… Bootcamp status tracking (Preparing, Open, Started, Completed)
  • โœ… Date-based bootcamp filtering
  • โœ… Instructor assignment

Application Process

  • โœ… Browse available bootcamps
  • โœ… Submit applications
  • โœ… Track application status (Pending, Approved, Rejected)
  • โœ… Duplicate application prevention
  • โœ… Blacklist checking
  • โœ… CV/Resume upload for applicants

User Interface

  • โœ… 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

Admin Features

  • โœ… Blacklist management
  • โœ… Application status updates
  • โœ… Bootcamp participant management
  • โœ… View all applications by bootcamp

๐Ÿš€ Getting Started

Follow these instructions to get the project running on your local machine.

Prerequisites

1. Clone the Repository

git clone https://github.com/yourusername/Bootcamp.git
cd Bootcamp

2. Backend Setup

Configure Database Connection

Update the connection string in Bootcamp.WebAPI/appsettings.json:

{
  "ConnectionStrings": {
    "DefaultConnection": "Host=localhost;Database=BootcampDb;Username=postgres;Password=yourpassword"
  }
}

Restore Dependencies

dotnet restore

Apply Database Migrations

dotnet ef database update --project Bootcamp.Repositories --startup-project Bootcamp.WebAPI

Run the Backend

dotnet run --project Bootcamp.WebAPI

The backend API will start on http://localhost:5158

3. Frontend Setup

Navigate to Frontend Directory

cd frontend

Install Dependencies

npm install

Configure API URL (if needed)

The API base URL is configured in frontend/src/api.ts:

const API_BASE_URL = 'http://localhost:5158/api';

Start Development Server

npm run dev

The frontend will start on http://localhost:5173

๐Ÿ“ Project Structure

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

๐Ÿ” API Endpoints

Authentication

  • POST /api/Auth/login - User login
  • POST /api/Auth/register/applicant - Register as applicant
  • POST /api/Auth/register/instructor - Register as instructor
  • POST /api/Auth/register/employee - Register as employee

Bootcamps

  • GET /api/Bootcamps - Get all bootcamps
  • GET /api/Bootcamps/{id} - Get bootcamp by ID
  • POST /api/Bootcamps - Create new bootcamp (Instructor only)
  • PUT /api/Bootcamps/{id} - Update bootcamp
  • DELETE /api/Bootcamps/{id} - Delete bootcamp

Applications

  • GET /api/Applications - Get all applications
  • GET /api/Applications/{id} - Get application by ID
  • POST /api/Applications - Submit new application
  • GET /api/Applications/my-applications/{applicantId} - Get user's applications
  • GET /api/Applications/bootcamp/{bootcampId} - Get applications for a bootcamp
  • PATCH /api/Applications/status - Update application status

Blacklist

  • GET /api/Blacklists - Get all blacklisted users
  • POST /api/Blacklists - Add user to blacklist
  • DELETE /api/Blacklists/{id} - Remove from blacklist

๐ŸŽจ Design Features

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

๐Ÿ”ง Configuration

JWT Configuration

Configure JWT settings in appsettings.json:

{
  "Jwt": {
    "Key": "your-secret-key-here-minimum-32-characters",
    "Issuer": "BootcampAPI",
    "Audience": "BootcampClient",
    "ExpiryMinutes": 60
  }
}

CORS Configuration

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());
});

๐Ÿงช Testing

Manual Testing

  1. Register a new user (Applicant, Instructor, or Employee)
  2. Upload CV/Resume (for Applicants)
  3. Login with credentials
  4. Navigate through the dashboard
  5. Create a bootcamp (as Instructor)
  6. Apply to a bootcamp (as Applicant)
  7. View and manage applications

๐Ÿ”ฎ Future Improvements

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

๐Ÿ› Known Issues & Fixes

CV/Resume Upload Feature (2026-01-02)

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.

Registration Bug Fix (2026-01-01)

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.

๐Ÿ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ‘จโ€๐Ÿ’ป Author

Batuhan Simsar

๐Ÿ™ Acknowledgments

  • 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.

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors