A very random collection of services, packed into a RESTful Rust api. https://fej.roosens.me
 
 
 
 
 
 
Go to file
Jef Roosens 45c4a4e257
[#26] Moved lib & bin to own folders; Moved server tests; wrote some readmes
2021-04-16 09:18:50 +02: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 [#26] Moved main binary to separate location 2021-04-15 19:26:37 +02:00
migrations [#24] Added first ivago migration 2021-04-15 18:05:02 +02:00
src [#26] Moved lib & bin to own folders; Moved server tests; wrote some readmes 2021-04-16 09:18:50 +02:00
.dockerignore Added Docker build files 2021-03-05 20:40:49 +01:00
.env [#24] Initialized diesel project 2021-04-15 17:53:35 +02:00
.env.container [#24] Initialized diesel project 2021-04-15 17:53:35 +02:00
.gitignore Added cargo init 2021-03-05 18:39:49 +01:00
Cargo.lock [#24] Initialized diesel project 2021-04-15 17:53:35 +02:00
Cargo.toml [#26] Moved lib & bin to own folders; Moved server tests; wrote some readmes 2021-04-16 09:18:50 +02:00
LICENSE [closes #20] Switched to AGPLv3 2021-04-13 22:03:27 +02:00
README.md [#26] Moved lib & bin to own folders; Moved server tests; wrote some readmes 2021-04-16 09:18:50 +02:00
diesel.toml [#24] Initialized diesel project 2021-04-15 17:53:35 +02:00
fejctl [#26] fejctl now fully replace Makefile & build 2021-04-16 00:06:48 +02:00
roadmap.md Added kissanime to roadmap 2021-04-14 00:00:29 +02:00

README.md

Fej

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 bulk of the project consists of the main fej library. The src folder contains the lib.rs file for this library, and all other binaries import from this main library.

All binaries can be found in /src/bin, with the biggest one being server. This is what actually runs as the Rocket.rs server. The other binaries (with more possibly coming) are utility tools that will most likely be run as cron jobs inside the containers, e.g. scrapers.

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

Roadmap

See roadmap.md.

Development

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)
./fejctl

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