zkt24/README.md

70 lines
2.0 KiB
Markdown
Raw Normal View History

2024-04-10 09:23:23 +00:00
# CopyBook
A messageboard type social website
2024-04-10 09:37:06 +00:00
The expected target environment is linux.
2024-04-10 09:23:23 +00:00
## 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
2024-04-10 09:37:06 +00:00
running the backend without docker requires:
```sh
go mody tidy
go build
./social-network
```
2024-04-10 09:23:23 +00:00
## Frontend
Typescript + nextjs + tailwindcss
2024-04-10 09:37:06 +00:00
all of the required packages are in `package.json` file
2024-04-10 09:23:23 +00:00
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.
2024-04-10 09:37:06 +00:00
running the frontend manually can be done through
```sh
npm i
npm run dev
```
2024-04-10 09:23:23 +00:00
## 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
2024-04-10 09:37:06 +00:00
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
```
2024-04-10 09:23:23 +00:00
## TODO
- better db management
- more documentation
- user personalization
- more ui changes