FrostByte/README.md
2023-10-18 20:54:43 +02:00

73 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# FrostByte Forum
A simple forum written in Rust and Typescript.
---
## Structure
- `server`: Contains the web server code
- `client`: Contains the frontend client
## Setup
- Install [Rust](https://www.rust-lang.org/) and [Node.js](https://nodejs.org/)
- Install [Just](https://just.systems/man/en/) and [Podman](https://podman.io/) (optional but recommended)
## Running the project
There are two ways to run this project. The simple way and the manual way.
### 1. The simple way (with aforementioned [Just](https://just.systems/man/en/) and [Podman](https://podman.io/))
To spin up a dev environment, run:
``` bash
just dev
```
For a complete list of targets, run:
``` bash
just -l
```
Spin up a dev server with `just dev` or just `just`.
This will start a dev server in a container running in the background.
It will also cd into the **client** directory and run `npm run dev` for you. The server will be available at `localhost:8080` and the client (vite preview) will be available at `localhost:3000`.
**Congrats, you're now ready to hack!**
For a project cleanup, you can run `just clean`. This will delete nore_modules and target directories etcetera. It will also stop and remove related images/containers.
For a more complete cleanup, you can run `just nuke`. This deletes everything related to this project AND **all containers and images on your system**. Use with caution.
### 2. The manual way
The client is a React application built with vite. `npm run dev` will start a dev server without a backend. ´npm run build´ will build the full application and drop it in the `client/dist` directory. This directory will then be served by the web server.
---
The server is a Rust application built with actix-web. `cargo run` will start a dev server with an in-memory database. `cargo build --release` will place a binary in `server/target/release` that can be run on a server. Note that the server binary will try to serve the client from `server/public` by default. This will be changable in the future.
```bash
# Local backend server
cd server
cargo run
# Dev client (vite)
cd client
npm run dev
```
### Production build
Essentially, you need to build the client and copy the files to the server's public directory. Then you need to build the server in release mode and run it.
This is all bundled in the Containerfile. You can build the container with:
```bash
just start-release
```
## Contributing
Contributions are welcome! Please read the [contributing guidelines](CONTRIBUTING.md) first.