Jef Roosens 5b515ecd91 | ||
---|---|---|
.hooks | ||
benches | ||
docker | ||
src | ||
tests | ||
.dockerignore | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
LICENSE | ||
Makefile | ||
README.md | ||
build | ||
roadmap.md |
README.md
Fej
Fej is an API written in Rust. I started this project to learn the language, and really just have some fun.
Project Structure
The folder structure follows the structure of the URLs, e.g. the route for
/hello/world
is found in the module src/hello
.
Each module contains the following base files:
mod.rs
: defines the modules' content, and contains the route definitions. The route functions themselves only contain the functionality needed to represent the data, not acquire it.controller.rs
: this file contains the actual logic of each route. If the logic becomes too complicated to be contained inside a single file,controller.rs
becomes its own module folder namedcontroller
.tests.rs
: this contains tests for the specific module. This can also be a module directory if need be.
Every module has a routes
function that returns its route macros.
Roadmap
See roadmap.md.
Development
The entire toolchain runs on Alpine inside Docker. This makes building easier, and (hopefully) eliminates any system-specific bugs.
A Makefile wrapper is provided for ease of use. Do check it out, as all the commands are documented for your understanding ;)
There's also the build
script. This script does all the "heavy" lifting. It
chooses which Dockerfile to build according to the given arguments, and
generates tags for the images (useful when pushing releases). The Makefile is
really just a wrapper around this build script, allowing you to write
make test
instead of ./build -m dev -a run test
.
tl;dr run make run
to run your build, and make test
to run the tests.
Docker images
The images are available here.