Contribute code
If you want to help further improve the website itself (the code itself, not the content displayed), this page will guide you to do this.
TODO: write this page once the rest of the contribution process will be smooth
General guidelines
- Only use English when coding (variables, functions, files, classes, types, ...) and commenting your code
- Heavily comment results of long research and debug session
- When fixing issues with obscure errors, make sure to document
- the error with its relevant output
- the situation it was happening
- sources used to develop the fix
- and why it works if the solution is comprehensible
- Please include a TODO or FIXME in case future research or maintenance will probably be necessary in the future
Improve a Fish function
TODO: get the repos, show the structure of files, show how it works via lxup CLI.
Edit Ansible playbooks in YAML
TODO: get the repos, show the structure of files, show how it works via lxup CLI, how to change, how to test, the basic tags system, how to learn ansible, access local docs, online docs, plugins...
Write Rust to change the website
TODO
Fork the website
TODO
Starting the website in development
You probably already ran just web to start the website locally. It will clone the website repository under folder lxup-website. The just web will run the website on localhost:8000. It runs the final version of the website (built with cargo build --release). Running just web on each change is going to be too slow to code ! Compiling your changes in release mode and the final linking with more than 400 dependencies takes some time...
To make sure you have the fastest feedback loop for free and without any mental load, you can use this command.
just dev
TODO: implement the full experience of this command !
It will use the Docker container used in other commands. We have optimized the speed of the Rust compilation (Cranelift+Wild) so you don't have to do it yourself ! Each time you change the code, it will restart the compilation and the server.
To avoid having multiple versions of this repository, you can reuse the cloned lxup-website repository. Because it was cloned from the official repos, you have to fix the Git remote origin (the URL of the remote repository) to your fork.
cd lxup-website
git config remote.origin.url git@codeberg.org:john/website
TODO: check this link after migration !
Testing the website on another device
When changing the visual look of the website, it is very important to make sure it also works on mobile. To test the website before production, you may want to test your changes on your phone directly !
The issue is that by default just dev will start a server on the interface 127.0.0.1, so it won't work. Use this alternative command to bind on 0.0.0.0 and make it accessible in the LAN.
just dev-public
If you try to open another device in the same LAN on the URL <your computer IP>:8000 you should see the local website.
See web server logs
You can inspect the web server logs via just web-logs (local release version) or just dev-logs (development version). This is useful to debug some requests or understand why a request has crashed.
> just web-logs
docker logs -f lxup-website-local
...
2026-08-04 19:22:54 172.17.0.1 GET /
2026-08-04 19:22:58 172.17.0.1 GET /tools/
2026-08-04 19:23:00 172.17.0.1 GET /tools/fish
2026-08-04 19:23:00 172.17.0.1 GET /tools/fish/community/contrib
2026-08-04 19:23:02 172.17.0.1 GET /tools/zoxide
> just dev-logs
2026-08-04 19:23:02 172.17.0.1 GET /meta/contrib/care
thread 'rocket-worker-thread' (19) panicked at /usr/local/cargo/git/checkouts/dme-11b2c640325cdb84/43795dc/app/core/src/preview/toc.rs:45:25:
not yet implemented
Improving our automations
The core of the contribution workflow is automated via several just commands (just sync, just web, just watch, ...). This is a mix of Bash, Fish and Docker.
TODO: how to change this, what to run in Docker or not.