A restful-API backend application for managing content and data meant to create a CV.
I created this project for 2 main reasons:
- I wanted something in my project backlog that showed rust expertise beyond advent of coded solutions. While it technically does the trick kind of but I believe having a project in my github portfolio that is actually usable and deployable says alot more than a couple of algorithmic solutions to programming puzzles.
- I wanted to actually properly learn the backend-frontend-fullstack development by doing one myself.
As a bonus, the goal is also for this project to create one or two CVs I will actually use.
Clone and build the project. The entire thing is meant to be executed as a cargo project. Beware though, right now, this thing is just a barebone axum app.
This project uses the googletest-rust framework for testing.
To run the unit test, execute:
$ cargo testFor integration tests, you currently only have to run
$ cargo test --features integrationThis will change though shortly once database integration is upstream
For now, this project is built around supporting these out of the box top-level features:
- User management with Oauth authentication
- Postgres database
- Each users have a profile with
- Basic information such as a personal name
- Contact information like email, phone number, and links.
- Each user also have multiple curricular items, this include:
- Education
- Work Experience
- Various skills (As of writing this, I haven't planned whether languages should be it's own type of skill)
This is the project progress. The items marked with [x] are done.
- Basic user management
- A user can be created with a id and username
- The username and userid have to be unique
- The userid to username mapping is injective
- User controller
- A user can login using Oauth
- Unexisting OAuth user is created
- Created user are stored in the postgres database
- An authenticated user can read their own data
- Reading another user's data is not possible
- Absent or non-owned ids both answer
404, never403, so that user ids cannot be enumerated
- Out of scope for now: organisation-wide profile lookup, where any member can view any other member's profile (cf. Cinode)
- User profile
- A user needs one
basic_profile - A user can have multiple
profiles - Each
profilecan only have one user owner - Profile content:
- Basic profile holds the users personal names including:
- First Name,
- Last Name,
- Any number of middle names,
- A basic "about" text for each user
- Basic profile holds the users personal names including:
- A user needs one