A project for managing online exams using C# gRPC and Docker.
EsamiOnline is a distributed software system designed for managing online exams at a telematic university. The system facilitates online exams conducted at a designated lab, ensuring strict identification and security protocols. It includes both client and server components with a minimal GUI for ease of use.
- C#: The primary programming language used for development.
- .NET: The framework used for building and running the application.
- MongoDB: The database used for storing data.
- gRPC: Used for communication between client and server.
- xUnit: The testing framework used for unit tests.
- Testcontainer: Open source library for providing throwaway, lightweight instances of databases, message brokers, web browsers, or just about anything that can run in a Docker container.
- AutoMapper: A library used for object-to-object mapping.
- Docker: Used for containerization of the application.
- Moq: Used for mock dependencies on unit testing.
- View upcoming exam dates.
- Book an exam slot (providing student ID and tax code).
- Participate in an exam:
- Students answer 10 questions prepared by the teacher, with multiple-choice answers.
- Each question must be answered within 5 minutes, scoring 3 points for correct answers, 0 for incorrect, and -1 for unanswered.
- At the end of the exam, students receive a report with correct answers and their scores.
- Clone the repository:
git clone https://github.com/umbertocicciaa/EsamiOnline.git cd EsamiOnline
- Build the Docker image:
docker build -t esamionline .
- Run the Docker container:
docker run -d -p 8080:80 esamionline
- Access the application at
http://localhost:8080
. - Follow the instructions on the screen to manage your online exams.