Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/eric-souzams/react-node-event-management
Front-end application in React and backend application in Node.js of the project for event management
https://github.com/eric-souzams/react-node-event-management
dayjs fastify lucide-react nodejs prisma-orm reactjs tailwind vitejs zod
Last synced: about 2 months ago
JSON representation
Front-end application in React and backend application in Node.js of the project for event management
- Host: GitHub
- URL: https://github.com/eric-souzams/react-node-event-management
- Owner: eric-souzams
- Created: 2024-04-20T14:55:22.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2024-04-20T15:21:17.000Z (9 months ago)
- Last Synced: 2024-04-20T16:59:09.298Z (9 months ago)
- Topics: dayjs, fastify, lucide-react, nodejs, prisma-orm, reactjs, tailwind, vitejs, zod
- Language: TypeScript
- Homepage:
- Size: 84 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Event Management
Event management is an application for **managing participants in in-person events**.
The tool allows the organizer to register an event and open a public registration page.
## Requirements
### Functional requirements
- [x] The organizer must be able to register a new event;
- [x] The organizer must be able to view event data;
- [x] The organizer must be able to view the list of participants;
- [x] The participant must be able to register for an event;
- [x] The participant must be able to view their registration badge;
- [x] The participant must be able to check-in at the event;### Business rules
- [x] The participant can only register for an event once;
- [x] Participants can only register for events with available places;
- [x] The participant can only check-in to an event once;## Database
In this application, a relational database (SQLite) was used.
### Database structure (SQL)
```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");
```
## RunningAfter cloning the UI repository, access the project folder and run the commands below:
```sh
npm install
npm run dev
```Visit http://localhost:5173 to view the application.
After cloning the API repository, access the project folder and execute the commands below:
```sh
npm install
npm run db:migrate
npm run dev
```Visit http://localhost:3333 to view the api.