InviteMe is a event handler Next.js project that i created to learn Next 14 features building a zero runtime application. This application is meant to handle events in slack servers, google calendar, discord or other event platforms, creating roles and groups, descriptions or images on the app.
After pulling this repository, you must pull its submodules (frontend and backend repositories) Then, run the development docker environment:
sudo docker compose up
Open http://localhost:3000 with your browser to see the result.
- Dashboard with avaliable events (house reserved that the logged user is insert on, or public events)
- Event Administration Page
- Role Based Authorization System on each event
- Image Repository to handle avatars and thumbnails (Self hosted? S3? not defined yet)
- All codebase must be inside this repository
- Dependencies must be defined in a config file inside the repository and containerizable, not on the OS
- Project must be runnable in different environments (development, staging, production)
- Backing services must external services
- Separate build and running stage inside the container
- Application must be stateless (read only containers, ephemeral)
- Service must be exposed to a bind port
- Scalability must be horizontal (be able to quickly deploy more containers to process requests)
- The whole application must be disposable, in case of invasion, the container must be burned and redeployed
- Development and Production environment must be pared
- Logs must streamed (remember log4j vulnerability)
- Admins processes must no be executed in a isolated container
- Relational Database => PostgreSQL running on a Docker container for development environment, Vercel Postgres DB for deployment environment (why? because it's free).
- Object-Relational Mapping? Prisma ORM, good Typescript integration, cascading relations and easy to change entities schemas (will definitely have some changes over time)
- Approved on Core Web Vitals
- Approved on Page Speed Insights
- Full customization on event/groups color and thumbnail with drag and drop images
- Zero Runtime UI Libraries, if we are going to use Next.js as framework, there is not sense in using CSS in JS or other stying solutions that will generate some runtime to generate the CSS, soo Tailwind CSS and Shadcn/UI will be used for stying
- Being able to organize the groups and roles by drag and dropping