Friends Net is a prototype of a social network allowing users to make friendships and send messages in real-time.
Application is divided into client and server parts. Client is built with React framework called Next.js, server side was developed in Spring boot.
- Clone repository via
git clone git@github.com:markovd18/friends-net.git
- Go to project's root directory (the one with
docker-compose.yml
in it) - Execute
docker-compose build
- this builds the project from sources - Execute
docker-compose up
- this bootstraps all required docker containers and runs the application stack
On first startup, application contains no data. Database will be created but only necessary data will be inserted, which is:
- default user roles
- default user relationship statuses
- default admin user - it's credentials are loggend into the console
- user login and registration
- authentication using JWT and stateless server session
- real-time messaging between users
- creating posts and announcements
- adding friends and blocking specific users
- user role settings for admin users
- Open API, React Front-End client, git version control
- Java 17 + Maven
- Spring Boot 2.6.1
- JPA Hibernate ORM
- Flyway
- Spring Websockets ( + STOMP)
- PostgreSQL database
- React.js 17.0.2 + yarn
- Node 17.0.0
- Next.js 12.0.7
- Typescript 4.5.4
- Material UI ^5.2.5
- Open API specification + Generator
- Docker with Docker compose
Application's build and bootstrap is made via Docker containers and they are orchestrated via Docker compose.
PostgreSQL database is run as a container of official postgres
image.
Server is build by special builder container which compiles source code into binaries. Runner container then copies these binaries into it's working directory and executes them.
Client's bootstrap is divided into three individual parts. First, the deps container install ass necessary dependencies and generates API. Second, the builder container creates production build and installs production dependencies. In the end the runner container copies the production build into it's workspace and executes them.
This project was build for purposes of KIV/PIA course of Faculty of Applied Sciences of University of West Bohemia in Pilsen.