Skip to content

ren1kron/web_lab4

Repository files navigation

Игра "Попади в график"

🔗 Репозиторий backend-части: https://github.com/ren1kron/web_lab4_backend

Java 17 Jakarta EE 9 Apache TomEE 9 Gradle 8.8 Angular 19 Tailwind CSS 3 TypeScript 5 PostgreSQL

Содержание

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

Web Lab 4 — учебный полнофункциональный проект для проверки попадания точек в составную геометрическую область. Реализована авторизация и регистрация пользователей

  • Backend — Jakarta EE 9 (JAX-RS + JPA) WAR-приложение, собираемое Gradle 8.8 и развёртываемое на Apache TomEE 9.
    Основные модули:

    • resources/ — REST-эндпойнты (/api/auth, /api/points)
    • dao/ — репозитории JPA
    • models/ — JPA-сущности и DTO
    • фильтры CORS и аутентификации
      Итоговый артефакт — web_lab4.war.
  • Frontend — Angular 19 c Tailwind CSS. Запускается на http://localhost:4200, обращается к API, рисует SVG-график и хранит токен сессии в localStorage.

  • База данных — PostgreSQL (взаимодействие реализовано через Hibernate).

Архитектура 📐

┌──────────┐      HTTPS       ┌────────────┐     JDBC      ┌──────────────┐
│  Клиент  │  ◄──────────────►│  TomEE 9   │◄─────────────►│  PostgreSQL  │
│ Angular  │                  │  JAX-RS    │               │     15+      │
└──────────┘                  └────────────┘               └──────────────┘
  • REST без состояния (/api/**), защищённый простым токеном в заголовке
  • CORS-фильтр допускает origin фронтенда
  • JPA + Hibernate создают/валидируют схему при старте

Быстрый старт 🚀

⚙️ Требования: JDK 17, Node ≥ 20, PostgreSQL ≥ 15

Backend

# 1) клон и сборка
git clone https://github.com/ren1kron/web_lab4_backend.git
cd web_lab4_backend
./gradlew clean build

# 2) деплой
cp build/libs/web_lab4.war  $TOMEE_HOME/webapps/
$TOMEE_HOME/bin/startup.sh

API будет доступен по http://localhost:8080/web_lab4/api.

Frontend

git clone https://github.com/ren1kron/web_lab4.git
cd web_lab4
npm ci
ng serve

Откройте http://localhost:4200 — горячая перезагрузка включена.

Docker Compose (одна команда)

docker compose up --build

Пример docker-compose.yml (TomEE + Postgres + Angular Nginx) лежит в /deploy/compose/.

API 🧩

Метод Endpoint Тело / параметры Описание
POST /api/auth/signup {login, password} Регистрация пользователя
POST /api/auth/login {login, password} Получение токена
GET /api/points ?page=0&size=20 Список точек пользователя
POST /api/points {x, y, r} Добавить точку, вернуть isHit
DELETE /api/points/{id} Удалить точку

Защищённые маршруты ожидают заголовок X-Auth-Token.

Схема БД 🗄️

CREATE TABLE users (
                     id         SERIAL PRIMARY KEY,
                     login      VARCHAR(64) UNIQUE NOT NULL,
                     password   VARCHAR(255)       NOT NULL
);

CREATE TABLE points (
                      id      SERIAL PRIMARY KEY,
                      user_id INTEGER REFERENCES users(id) ON DELETE CASCADE,
                      x       DOUBLE PRECISION NOT NULL,
                      y       DOUBLE PRECISION NOT NULL,
                      r       DOUBLE PRECISION NOT NULL,
                      is_hit  BOOLEAN          NOT NULL,
                      created TIMESTAMP        NOT NULL DEFAULT NOW()
);

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published