This project is developed as part of the Cloud Technologies course at the University of Gdańsk, specifically tailored for students pursuing a practical profile in computer science. It aims to address a specific need or problem statement, often originating from a real-world scenario where a company or individual requires a robust database system.
The project is structured into two main components: the client-side and the server-side, facilitating a full-stack development environment.
-
Client-side: Built with Next.js, the client-side of the application offers a dynamic and responsive user interface. It is designed to interact seamlessly with the server-side, providing an intuitive user experience.
-
Server-side: The server-side is developed using Node.js, with a focus on handling API requests, authentication, and database interactions. It employs Prisma as an ORM for database management, ensuring efficient data handling and migrations.
- Authentication: Utilizes Keycloak for robust authentication and authorization, ensuring secure access to the application.
- Database Management: Incorporates Prisma for database schema definition, migrations, and query building, facilitating smooth data operations.
- Responsive UI: The client-side is designed with responsiveness in mind, ensuring compatibility across various devices and screen sizes.
To get started with this project, follow these steps:
- Clone the repository to your local machine.
- Navigate to the
backenddirectory and runnpm installto install server-side dependencies and then runnpm start. - Similarly, navigate to the
clientdirectory and runnpm installfor client-side dependencies and then runnpm run dev. - Set up your
.envfiles in bothbackendandclientdirectories according to the provided templates. - Run
docker-compose upto start the keycloak and database containers. - Access application at
localhost:3000
KEYCLOAK_CLIENT_ID=your_client_id
KEYCLOAK_CLIENT_SECRET=your_client_secret
KEYCLOAK_ISSUER="http://localhost:8080/realms/nextRealm"
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET=nextauth_secret
NEXT_PUBLIC_API_URL="http://localhost:3001"
DATABASE_URL="postgresql://login:password@localhost:5432/next"
S3_ACCESS_KEY=s3_access_key
S3_SECRET_ACCESS_KEY=s3_secret_access_key