For the Russian version, please see README.ru.md.
Knuizz is a full-stack training project created to practice and demonstrate web development skills. It's a simple application for creating and taking quizzes, featuring a backend on ASP.NET Core and a frontend on React.
- Play Quizzes: Answer questions from multiple sources, including "official" ones (with rating points) and those created by other users.
- Create Your Own Quizzes: After registering, you can create your own question sets and share them.
- Compete: A simple rating and level system, along with a leaderboard to track progress.
- Manage Your Profile: Users can view their statistics and manage their created quizzes.
A live demo is available at this link.
- Framework: .NET 9, ASP.NET Core
- Database: PostgreSQL & Entity Framework Core
- Authentication: JWT
- Testing: NUnit for unit tests
- API Documentation: Swagger + Redoc
- Build Tool: Vite
- Framework: React
- State Management: Redux Toolkit (with RTK Query)
- Styling: Tailwind CSS & Radix UI
- Routing: React Router
- Internationalization: i18next
This method will launch the entire application (API, client, and database) in Docker containers.
- Docker must be installed and running.
git clone https://github.com/KnyazLV/Knuizz.git
cd knuizzOpen the docker-compose.yml file and replace the placeholder values in the environment section of the api service:
POSTGRES_PASSWORD: A password for the database.ConnectionStrings__DefaultConnection: Ensure the password here matchesPOSTGRES_PASSWORD.Jwt__Key: Generate and insert a long, random key (at least 32 characters).Jwt__Issuer: Your API's identifier (e.g.,KnuizzApi).Jwt__Audience: Your client's identifier (e.g.,KnuizzApiClient).
From the root project folder, run:
docker-compose up --buildThe first launch may take some time.
- Web Client:
http://<your-host-address>:5173(e.g.,http://localhost:5173) - API Documentation:
http://<your-host-address>:5130/swagger(e.g.,http://localhost:5130/swagger)
This method requires manual installation of .NET, Node.js, and PostgreSQL.
- Set up
user-secretsfor theKnuizz.Apiproject. Navigate tosrc/Knuizz.Apiand run the following commands with your values:dotnet user-secrets set "ConnectionStrings:DefaultConnection" "Host=localhost;Database=knuizz_db;Username=postgres;Password=YOUR_PASSWORD" dotnet user-secrets set "Jwt:Key" "YOUR_SUPER_SECRET_JWT_KEY_32_CHARS_LONG" dotnet user-secrets set "Jwt:Issuer" "KnuizzApi" dotnet user-secrets set "Jwt:Audience" "KnuizzApiClient" - Apply database migrations:
dotnet ef database update - Run the API:
dotnet run
- Navigate to the client directory:
cd ../knuizz-web - Create a
.envfile and add your API's address:VITE_API_URL=http://localhost:5130 - Install dependencies and start:
npm install npm run dev

