70 lines
2.0 KiB
Markdown
70 lines
2.0 KiB
Markdown
# CopyBook
|
|
|
|
A messageboard type social website
|
|
|
|
The expected target environment is linux.
|
|
## Backend
|
|
Fully coded in golang utilizing the following technologies:
|
|
- https://github.com/gofiber/fiber
|
|
- https://gorm.io/
|
|
|
|
The backend consists of multiple modules:
|
|
- db.go: database modules setup with gorm
|
|
- auth.go: authorization module with jwt tokens setup
|
|
- server.go: main buisness logic functionality
|
|
|
|
running the backend without docker requires:
|
|
```sh
|
|
go mody tidy
|
|
go build
|
|
./social-network
|
|
```
|
|
|
|
## Frontend
|
|
Typescript + nextjs + tailwindcss
|
|
|
|
all of the required packages are in `package.json` file
|
|
|
|
the frontend uses nextjs for server side rendering.
|
|
|
|
there are multiple pages each responsible for its own functionality:
|
|
- index.tsx: mounted on `/` is the homepage for the messageboard.
|
|
- login.tsx: mounted on `/login` the login page
|
|
- logout.tsx: mounted on `/logout` for logging out and removing the jwt token.
|
|
- profile.tsx: mounted on `/profile` is for the user profile info.
|
|
- signup.tsx: mounted on `/signup` is for registering new users.
|
|
|
|
running the frontend manually can be done through
|
|
```sh
|
|
npm i
|
|
npm run dev
|
|
```
|
|
|
|
|
|
## Devops
|
|
Fully dockerized and ready for deployment on any environment
|
|
|
|
backend setup consists of 2 containers one that builds the golang binary for and another that runs the server
|
|
|
|
the database for the backend is running a postgresql server with persistent storage enabled
|
|
|
|
frontend setup has 3 containers:
|
|
`deps`: pulls the dependecies required for compiling the typescript files.
|
|
`builder`: compiles the typescript files.
|
|
`runner`: runs the nextjs server.
|
|
|
|
all of the previous services are running on `internalnet` virtual network and then afterwards its served with a nginx reverse proxy for traffic management and redundancy purposes
|
|
|
|
afterwards the application should be up and running http://localhost
|
|
|
|
the app can be turned off and on and removed through the following scripts:
|
|
```
|
|
start-app.sh
|
|
stop-app.sh
|
|
remove-app.sh
|
|
```
|
|
## TODO
|
|
- better db management
|
|
- more documentation
|
|
- user personalization
|
|
- more ui changes |