A very random collection of services, packed into a RESTful Rust api. https://fej.roosens.me
Go to file
Jef Roosens d8b0d35c40 Merge pull request 'Update dependency eslint to v8' (#94) from renovate/eslint-8.x into develop
Reviewed-on: #94
2021-12-24 09:03:02 +01:00
.hooks [#26] Moved all routing to server binary 2021-04-16 00:32:03 +02:00
benches [#13] Further overhaul of the project structure for better testing 2021-04-08 22:39:04 +02:00
docker Merge pull request 'Update node Docker tag to v17' (#97) from renovate/node-17.x into develop 2021-12-24 09:02:25 +01:00
migrations Added backend linting job 2021-05-01 21:40:46 +02:00
src Fixed faulty import line 2021-05-13 15:51:44 +02:00
web Update dependency eslint to v8 2021-12-24 08:01:11 +00:00
.dockerignore [#44] [#44] Release container now builds & packages frontend as well 2021-04-29 10:50:21 +02:00
.editorconfig Added .editorconfig file 2021-05-02 16:12:05 +02:00
.env [#24] Initialized diesel project 2021-04-15 17:53:35 +02:00
.gitignore Added cargo init 2021-03-05 18:39:49 +01:00
.woodpecker.yml Fixed faulty import line 2021-05-13 15:51:44 +02:00
Cargo.lock Update Rust crate diesel to 1.4.8 2021-12-24 07:59:52 +00:00
Cargo.toml Update Rust crate diesel to 1.4.8 2021-12-24 07:59:52 +00:00
LICENSE [closes #20] Switched to AGPLv3 2021-04-13 22:03:27 +02:00
README.md [#26] Updated README again 2021-04-16 09:22:30 +02:00
Rocket.toml [closes #33] Added compose file; ./fejctl rr works now 2021-04-17 15:10:42 +02:00
diesel.toml [#28] Switched search_streets to database 2021-04-17 22:39:22 +02:00
fejctl [#44] Fej can now easily startup a Vite development server 2021-04-29 10:23:07 +02:00
renovate.json Add renovate.json 2021-04-20 08:00:45 +00:00
roadmap.md [#26] Updated roadmap.md 2021-04-16 09:30:25 +02:00



Fej is a RESTful API that does lots of different things. It started as an experiment to learn Rust, but has grown into a full-on passion project.

Project Structure

The src folder contains subfolders for the various binaries and the main library, called fej. The biggest binary is called server, which is the binary that actually runs the Rocket.rs web server. All the others are utility programs, mostly consisting of scrapers for various services.

Version 1.1 also introduces the use of a database, namely PostgreSQL 13.


See roadmap.md.


To make development more consistent (and keep my computer a bit cleaner) I've decided to run the entire toolchain using Docker, with Alpine Linux base images. This also allows me to make really small final images. Technically, Docker is the only dependency you need to contribute to this project (not accounting for language servers etc.).

A Bash script is provided to speed up development on the various binaries. It aids in starting up the containers, choosing which binary to run etc. A quick rundown of its most important features:

# By default, it compiles the 'server' binary (but doesn't run it)

# The first argument is the action you wish to perform, the second on which
# binary (not all commands need a binary as input, so they just ignore it)
# For example, this will run the binary called server
./fejctl r server

# This runs the tests (all commands also have their full name if you want)
./fejctl t
./fejctl test

# These attach to the two containers
./fejctl sh   # Opens a new root shell inside the 'fej' container
./fejctl psql # Open a new psql shell in the fej database

Docker images

The images are available here.