10. (15) Приложение-Web: списки на все случаи жизни.
Google Doc с артифактами здесь.
- Web-приложение по редактированию списков задач
- У пользователей есть аккаунты, редактирование списков невозможно без регистрации
- Каждый список имеет наименование и очередность в порядке добавления в общем наборе списков пользователя
- В списках хранятся карточки в порядке добавления
- Каждую карточку можно редактировать. Она содержит поля:
- Название
- Описание
- Статус
- У каждого пользователя может быть не более 3 активный авторизированных устройств (авторизированных сессий).
- Пользователь сделал регистрацию -> попал в личный кабинет.
- Пользователь сделал вход в свой аккаунт -> попал в личный кабинет.
- Пользователь создает новый список -> на UI отображается новый созданный список.
- Пользователь создает новый элемент списка -> на UI отображается новый элемент списка.
-
Auth:
- Registration (
auth/register
): creates a new user and access/refresh tokens. - Authorization (
auth/login
): checks the validity of tokens. - Refresh tokens (
auth/refresh
): updates access and refresh tokens.
- Registration (
-
User (protected):
- Get user data (email, username) by ID
-
List (protected):
- Get all lists and tasks in them by user ID
- Create a new list for a user
- Update list's data for a user
- Delete a list for a user
-
Task:
- 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 для списков+задач на стороне сервера.
-
CI с тестами в папке
tests/*.test.ts
. -
Ручное через Postman:
Follow the steps below:
-
You should have
bun
installed. See the official manual here. -
Install project dependencies:
# server deps
bun install
# client deps
cd ./client && bun install
- 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"
- Run the docker and execute the following command (it creates two containers: one for the
postgres
database and another for theadminer
):
cd ./docker
docker-compose up
- 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
- To run the server:
bun run dev
- To run tests:
bun run test
- To build the server:
bun run build
- To apply all existing Prisma migrations (see prisma/migrations):
bun run prisma:deploy
- To generate Prisma client (it creates TS types for Prisma schema based on schema.prisma):
bun run prisma:generate
- 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.