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

2.5 KiB
Raw Blame History

FrostByte Forum

A simple forum written in Rust and Typescript.


Structure

  • server: Contains the web server code
  • client: Contains the frontend client

Setup

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 and Podman)

To spin up a dev environment, run:

just dev

For a complete list of targets, run:

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.

# 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:

just start-release

Contributing

Contributions are welcome! Please read the contributing guidelines first.