Skip to content

3-hour-long test assignment assessing pair programming skills | HSE, 3rd year, 1st module (2024-2025)

License

Notifications You must be signed in to change notification settings

Giga-Chad-LLC/extreme-programming-assignment

Repository files navigation

Extreme Programming Assignment

10. (15) Приложение-Web: списки на все случаи жизни.

Google Doc с артифактами здесь.

Описание проекта

Требования:

  1. Web-приложение по редактированию списков задач
  2. У пользователей есть аккаунты, редактирование списков невозможно без регистрации
  3. Каждый список имеет наименование и очередность в порядке добавления в общем наборе списков пользователя
  4. В списках хранятся карточки в порядке добавления
  5. Каждую карточку можно редактировать. Она содержит поля:
    • Название
    • Описание
    • Статус
  6. У каждого пользователя может быть не более 3 активный авторизированных устройств (авторизированных сессий).

Сценарии:

  1. Пользователь сделал регистрацию -> попал в личный кабинет.
  2. Пользователь сделал вход в свой аккаунт -> попал в личный кабинет.
  3. Пользователь создает новый список -> на UI отображается новый созданный список.
  4. Пользователь создает новый элемент списка -> на UI отображается новый элемент списка.

Endpoints:

  1. Auth:

    1. Registration (auth/register): creates a new user and access/refresh tokens.
    2. Authorization (auth/login): checks the validity of tokens.
    3. Refresh tokens (auth/refresh): updates access and refresh tokens.
  2. User (protected):

    1. Get user data (email, username) by ID
  3. List (protected):

    1. Get all lists and tasks in them by user ID
    2. Create a new list for a user
    3. Update list's data for a user
    4. Delete a list for a user
  4. Task:

    1. Create/update/delete a task in a list by user and list id

План работ

Версия 1 (1.5h):

  • Endpoint'ы для регистрации, авторизации с помощью JWT, и обновления токенов (Владислав).
  • Endpoint'ы для CRUD'а списков (Дмитрий).

Версия 2 (final):

  • Тесты для написанных endpoint'ов регистрации, авторизации (Владислав).
  • Endpoint'ы для CRUD задач в списках (Дмитрий).
  • Тесты для написанных endpoint'ов списков и задач (Дмитрий).

Итого, успели реализовать авторизацию/регистрацию с помощью JWT и CRUD для списков+задач на стороне сервера.

Тестирование:

  1. CI с тестами в папке tests/*.test.ts.

  2. Ручное через Postman:

    1. Тестирование для Auth-роутов: image
    2. Тестирование для листов и задач: 1 2 3 4 5 6 7 8

Development

Follow the steps below:

  1. You should have bun installed. See the official manual here.

  2. Install project dependencies:

# server deps
bun install
# client deps
cd ./client && bun install
  1. Create a .env file in the root directory with the following content:
PORT=3000
JWT_SECRET=my-secret-123
DATABASE_URL="postgresql://postgres:password@localhost:5432/db-name?schema=public"
# e.g., "postgresql://root:[email protected]:5432/my-project-template?schema=public"
  1. Run the docker and execute the following command (it creates two containers: one for the postgres database and another for the adminer):
cd ./docker
docker-compose up
  1. Apply existing Prisma migrations:
# applies migrations from prisma/migrations to the postgres database
bun run prisma:deploy
# generates Prisma client based on the schema.prisma file
bun run prisma:generate

Other commands

  1. To run the server:
bun run dev
  1. To run tests:
bun run test
  1. To build the server:
bun run build

Workflow with Prisma

  1. To apply all existing Prisma migrations (see prisma/migrations):
bun run prisma:deploy
  1. To generate Prisma client (it creates TS types for Prisma schema based on schema.prisma):
bun run prisma:generate
  1. How to create a new migration (you need it when you modify the schema.prisma file):
bun prisma migrate dev --name 'my commit message'
# Do not forget to apply the migration and generate the client after that:
bun run prisma:deploy
bun run prisma:generate

This project was created using bun init in bun v1.1.25. Bun is a fast all-in-one JavaScript runtime.

About

3-hour-long test assignment assessing pair programming skills | HSE, 3rd year, 1st module (2024-2025)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published