Skip to content

O pass.in é uma aplicação de gestão de participantes em eventos presenciais, desenvolvida durante o evento NLW Unite da Rocketseat.

Notifications You must be signed in to change notification settings

jessrbl/API-PassIn

Repository files navigation

Pass.in

O pass.in é uma aplicação de 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 inscritos podem 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.


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)

alt text

alt text

alt text


Banco de dados

Banco de dados relacional (SQL).


Estrutura do banco (SQL)

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

-- CreateTable
CREATE TABLE "attendees" (
    "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    "name" TEXT NOT NULL,
    "email" TEXT NOT NULL,
    "event_id" TEXT NOT NULL,
    "created_at" DATETIME NOT NULL 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" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    "created_at" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
    "attendeeId" INTEGER NOT NULL,
    CONSTRAINT "check_ins_attendeeId_fkey" FOREIGN KEY ("attendeeId") 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_attendeeId_key" ON "check_ins"("attendeeId");

Utilização

  1. Instalação de Dependências:

    Execute o seguinte comando para instalar todas as dependências listadas no arquivo package.json:

    npm install
    
  2. Configuração do Banco de Dados:

    Se estiver usando o Prisma para interagir com o banco de dados, execute as migrações do banco de dados usando o seguinte comando:

    npm run db:migrate
    
  3. Execução do Servidor de Desenvolvimento:

    Para iniciar o servidor de desenvolvimento, utilize o seguinte comando:

    npm run dev
    

    Isso iniciará o servidor usando o TypeScript e monitorará as alterações no código fonte, reiniciando o servidor conforme necessário.

  4. Visualização do Prisma Studio (opcional):

    Se desejar visualizar o Prisma Studio, uma interface de usuário para explorar e gerenciar os dados do banco de dados, utilize o seguinte comando:

    npm run db:studio
    

    Isso abrirá o Prisma Studio no seu navegador padrão.


Status

Badge em Desenvolvimento


✨ Autor

Foto da Jéssica F. no GitHub
Jéssica F. Rebelo

About

O pass.in é uma aplicação de gestão de participantes em eventos presenciais, desenvolvida durante o evento NLW Unite da Rocketseat.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published