Skip to content

Latest commit

 

History

History
84 lines (61 loc) · 3.1 KB

README.md

File metadata and controls

84 lines (61 loc) · 3.1 KB

PASS.IN

Desenvolvimento de aplicação back-end Java com Maven, SpringBoot e API Rest. Integrado com PostgreSQL e utilizando DTOs para manipulação de dados.

A aplicação desenvolvida durante a NLW Unite, da Rocketseat, tem como objetivo criar o back-end, em Java, para um aplicativo de tickets para eventos.

A finalidade da aplicação é realizar a gestão de participantes em eventos presenciais.

A ferramenta permite que o organizador cadastre um evento e abra uma página pública de inscrição.

Os participantes podem se inscrever no evento emitir uma credencial para check-in no dia do evento.

O sistema fará um scan da credencial do participante para permitir a entrada no evento.

Observação.: Inicialmente, a aplicação utilizava o banco de dados HyperSQL, posteriormente, mudei o banco de dados para o PostgreSQL

Requisitos

Requisitos Funcionais

  • O organizador deve poder cadastrar um novo evento;
  • O organizador deve poder visualizar dados de um evento;
  • O organizador deve poser visualizar a lista de participantes;
  • O participante deve poder se inscrever em um evento;
  • O participante deve poder visualizar seu crachá de inscrição;
  • O participante deve poder realizar check-in no evento;

Regras de Negócio

  • O participante só pode se inscrever em um evento uma única vez;
  • O participante só pode se inscrever em eventos com vagas disponíveis;
  • O participante só pode realizar check-in em um evento uma única vez;

Requisitos Não Funcionais

  • O check-in no evento será realizado através de um QRCode;

Documentação da API (Swagger)

Para documentação da API, acesse o link: https://nlw-unite-nodejs.onrender.com/docs

Diagrama ERD

Diagrama ERD do banco de dados

Banco de dados

Nessa aplicação vamos utilizar banco de dados relacional (SQL). Para ambiente de desenvolvimento seguiremos com o PostgreSQL.

Estrutura do banco (SQL)

-- CreateTable
CREATE TABLE events (
    id VARCHAR(255) NOT NULL PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    details VARCHAR(255) NOT NULL,
    slug VARCHAR(255) NOT NULL,
    maximum_attendees INTEGER NOT NULL
);

-- CreateTable
CREATE TABLE attendees (
    id VARCHAR(255) NOT NULL PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    email VARCHAR(255) NOT NULL,
    event_id VARCHAR(255) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    CONSTRAINT attendees_event_id_fkey FOREIGN KEY (event_id) REFERENCES events (id) ON DELETE RESTRICT ON UPDATE CASCADE
);

-- CreateTable
CREATE TABLE check_ins(
    id SERIAL PRIMARY KEY,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    attendee_id VARCHAR(255) NOT NULL,
    CONSTRAINT check_ins_attendee_id_fkey FOREIGN KEY (attendee_id) REFERENCES attendees (id) ON  DELETE RESTRICT ON UPDATE CASCADE
);

-- CreateIndex
CREATE UNIQUE INDEX events_slug_key ON events(slug);

-- CreateIndex
CREATE UNIQUE INDEX attendees_event_id_email_key ON attendees(event_id, email);

-- CreateIndex
CREATE UNIQUE INDEX check_ins_attendee_id_key ON check_ins(attendee_id);