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
- 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;
- 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;
- O check-in no evento será realizado através de um QRCode;
Para documentação da API, acesse o link: https://nlw-unite-nodejs.onrender.com/docs
Nessa aplicação vamos utilizar banco de dados relacional (SQL). Para ambiente de desenvolvimento seguiremos com o PostgreSQL.
-- 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);