This is a personal project
A comprehensive full-stack application for student engagement and educational administration. Built with ASP.NET Core on the backend and Next.js on the frontend.
eSECAI (Electronic Student Engagement Checker β powered by AI) is an intelligent platform built to streamline how educators and administrators track, assess, and respond to student participation across academic activities. Leveraging artificial intelligence, eSECAI provides real-time insights into student engagement patterns, activity completion, and overall academic involvement β enabling schools to make data-driven decisions that support student success. Designed with simplicity and efficiency in mind, eSECAI bridges the gap between traditional manual monitoring and modern AI-assisted evaluation.
Backend:
- π΅ ASP.NET Core (.NET) - Web API Framework
- ποΈ Entity Framework Core - ORM & Database Access
- πΎ SQL Server - Relational Database
- π JWT Authentication - Secure Token-Based Auth
Frontend:
- β‘ Next.js 16+ - React Meta-Framework
- π TypeScript - Type-Safe JavaScript
- π¨ TailwindCSS - Utility-First CSS Framework
- π React Query - Server State Management
- π§© Radix UI - Headless Component Library
Skwela/
βββ backend/ # .NET Backend
β βββ Skwela.API/ # REST API & Controllers
β βββ Skwela.Application/ # Business Logic & Use Cases
β βββ Skwela.Domain/ # Domain Entities & Models
β βββ Skwela.Infrastructure/ # Data Access & Services
β βββ Skwela.sln # Solution File
β βββ docker-compose.yml # Docker Compose Configuration
β βββ Dockerfile # Docker Image Definition
β βββ init_docker.sql # Database Initialization
β
βββ frontend/ # Next.js Frontend
βββ src/
β βββ app/ # Application Pages & Layout
β βββ components/ # Reusable React Components
β βββ hooks/ # Custom React Hooks
β βββ lib/ # Utility Functions
β βββ schemas/ # Data Validation Schemas
β βββ services/ # API Services
β βββ types/ # TypeScript Type Definitions
βββ package.json # Dependencies & Scripts
βββ tsconfig.json # TypeScript Configuration
βββ next.config.ts # Next.js Configuration
The backend is organized into four main layers:
-
Domain Layer (
Skwela.Domain)- Core business entities (User, Classroom, Enrollment, Assignment, Submission)
- Business logic enums (UserRole)
- Custom exceptions
-
Application Layer (
Skwela.Application)- Business use cases and orchestration
- DTOs (Data Transfer Objects)
- Service interfaces
- Repository interfaces
-
Infrastructure Layer (
Skwela.Infrastructure)- Entity Framework Core DbContext
- Database migrations
- Repository implementations
- External service integrations
-
API Layer (
Skwela.API)- REST API controllers
- Request/response handling
- Authentication/Authorization
- Dependency injection setup
The frontend uses a feature-based organization:
- Pages & Routing: Next.js App Router for navigation
- Components: Reusable UI components using Radix UI primitives
- Services: Centralized API communication layer
- Hooks: Custom React hooks for stateful logic
- Types: TypeScript definitions for type safety
- .NET 8.0+ SDK
- Node.js 18+ & npm
- SQL Server
- Docker & Docker Compose
-
Navigate to backend directory:
cd backend -
Restore NuGet packages:
dotnet restore
-
Configure connections string:
- Update
appsettings.jsonwith your database connection string and JWT key
{ "ConnectionStrings": { "DefaultConnection": "your-connection-string" }, "Jwt": { "Key": "your-secret-key" } } - Update
-
Run database migrations:
dotnet ef database update
-
Build the solution:
dotnet build
-
Run the API:
dotnet run --project Skwela.API
The API will be available at
https://localhost:5001(or configured port)
-
Navigate to frontend directory:
cd frontend -
Install dependencies:
npm install
-
Configure API endpoint:
- Update
proxy.tsor environment variables with your backend API URL
- Update
-
Run development server:
npm run dev
The frontend will be available at
http://localhost:3000
To run the entire application using Docker:
- From the project root, build and start containers:
docker-compose -f backend/docker-compose.yml up -d
This will:
- Start the SQL Server database with initial schema
- Build and run the ASP.NET Core API
- Expose the API on the configured port
- User Management: Authentication and authorization with JWT
- Classroom Management: Create and manage classrooms
- Student Enrollment: Manage student enrollment in classrooms
- Assignment Tracking: Create and track assignments
- Submission Management: Students submit assignments and receive feedback
The API follows RESTful conventions with the following main endpoints:
- Authentication:
/api/auth/* - Classrooms:
/api/classrooms/* - Enrollments:
/api/enrollments/* - Users:
/api/users/*
For detailed API documentation, check the HTTP files in Skwela.API/ or import them into your API client (Postman, Insomnia, etc.)
Backend:
cd backend
dotnet buildFrontend:
cd frontend
npm run buildcd backend
dotnet testFrontend:
cd frontend
npm run lint{
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Database=SkwelDB;User Id=sa;Password=YourPassword123!;"
},
"Jwt": {
"Key": "your-very-secret-key-min-32-characters-long",
"Issuer": "SkwelAuth",
"Audience": "SkwelAPI"
},
"Logging": {
"LogLevel": {
"Default": "Information"
}
}
}Create a .env.local file:
NEXT_PUBLIC_API_URL=http://localhost:5001
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is proprietary. Unauthorized copying, distribution, or use is prohibited.
For issues, questions, or suggestions, please open an issue or contact the development team.