TTime/BUILD.md

42 lines
2.3 KiB
Markdown
Raw Normal View History

2024-02-12 14:57:43 +01:00
# Build Instructions
2024-02-12 16:13:41 +01:00
The build is fairly simple, and I intend to keep it that way. The project is split into two main parts: the backend and the frontend.
Making all of these parts work properly under linux/macOS is fairly simple, but Windows is untested territory. You can always contact [Billy G™®©](https://support.microsoft.com) for help.
2024-02-12 15:46:00 +01:00
## Backend
For demo purposes, the backend uses sqlite3 as the database. The database is stored in the `backend` directory.
2024-02-12 16:13:41 +01:00
For future development, the database will be migrated to a more robust database such as PostgreSQL. This will require a few changes to the code, but the migration should be fairly simple. Practical difference for the programmer is the requirement of a running PostgreSQL server, for which a container can be used.
For initializing the database, simply navigate to the backend directory and run `make migrate`, which will create the database and the necessary tables.
2024-02-12 15:46:00 +01:00
To build and run the main server binary:
```bash
make build
make run
```
The server will be running on `localhost:8080`. This server does not hot reload, so you will need to restart the server after making changes.
2024-02-12 16:13:41 +01:00
If you ever wonder what the makefile does, you can always inspect it. It's quite simple and self-explanatory.
2024-02-12 15:46:00 +01:00
## Frontend
2024-02-12 16:13:41 +01:00
The frontend code might look very intimidating at first, but it's actually quite simple. The vast majority of the code is boilerplate and configuration.
The important parts resides in the `src` directory, which contains the actual React components and corresponding styles.
2024-02-12 15:46:00 +01:00
The frontend is built using Vite with React. Vite handles hot reloading and bundling.
First, you need to pull in the dependencies by running `npm install` in the frontend directory.
To spin up the development server, run `npm run dev`. This will start the development server on `localhost:3000`. Note that the backend server should be running for the frontend to work.
## Release Builds
2024-02-12 16:13:41 +01:00
The release build for the backend is a simple binary that can be run on any machine. The release build for the frontend is a static bundle that can be served by any web server.
2024-02-12 16:41:04 +01:00
We combine the frontend and backend into a single container using Podman/Docker. The `Containerfile` (also known as a Dockerfile) in the container directory is used to build the container. To see exactly how the container is built, refer to the `Containerfile`.