Skip to content

Commit 6cb367e

Browse files
committed
doc: clean readme
1 parent 0e8aa9c commit 6cb367e

1 file changed

Lines changed: 44 additions & 59 deletions

File tree

README.md

Lines changed: 44 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,10 @@ lang: en-GB
1515
- [Project Structure](#project-structure)
1616
- [Tooling & Dependencies](#tooling-dependencies)
1717
- [Building & Running](#building-running)
18-
- [Building the PWA](#building-the-pwa)
19-
- [Building the Android App](#building-the-android-app)
20-
- [Code Conventions & Contributing](#code-conventions-contributing)
21-
- [Continuous Integration (CI)](#continuous-integration-ci)
22-
- [Continuous Deployment (CD)](#continuous-deployment-cd)
23-
- [Weekly Deep Checks](#weekly-deep-checks)
18+
- [Android Native APK](#android-native-apk)
19+
- [Engineering Principles & Contributing](#engineering-principles-contributing)
20+
- [Continuous Integration & Continuous Deployment (CI / CD)](#continuous-integration-continuous-deployment-ci-cd)
21+
- [Weekly Deep Checks](#weekly-deep-checks)
2422

2523
<!--toc:end-->
2624

@@ -30,14 +28,15 @@ A simple, efficient and cross-platform workout logging application with
3028
[800+ exercises] built-in, by [Guilhem Fauré].
3129

3230
- 💪 Easily log workout sessions with sets, reps, weights, distances, durations
33-
- 📊 Analytics panel with line charts to track progress over time
34-
- 🏋️ Browse the 870+ included exercises with search functionality
35-
- Easily add your custom exercises or customize existing ones
36-
- 📱 Mobile-first responsive design, bottom navigation bar, local-first
31+
- 🏋️ Use the 870+ included exercises with images and instructions
32+
- 📝 Easily add your custom exercises or customize existing ones
33+
- 🔍 Easily search them with powerful text search and attribute based filtering
34+
- 📊 Track your progress over time on several metrics and exercises in analytics
35+
- 📱 Responsive design, ergonomic navigation, local-first, performant
3736

3837
## Project Structure
3938

40-
The project follows a modular Rust structure for a Dioxus application:
39+
The project follows a modular [Rust] structure for a [Dioxus] application:
4140

4241
```text
4342
LogOut/
@@ -61,16 +60,14 @@ LogOut/
6160

6261
## Tooling & Dependencies
6362

64-
| Purpose | Library |
65-
| -------------------------------------------------------- | ---------- |
66-
| Main UI reactive framework | [Dioxus] |
67-
| (De)Serialization, data models and persistence | [Serde] |
68-
| PWA Workouts and custom exercises storage ([IndexedDB]) | [Rexie] |
69-
| Native Workouts and custom exercises storage ( [SQLite]) | [Rusqlite] |
70-
| Asynchronous HTTP client | [Reqwest] |
71-
| Date and time manipulation (UTC/Local offsets) | [Time] |
72-
| Async runtime for the native application target. | [Tokio] |
73-
| Bindings to browser APIs (Service Worker…) | [Web-sys] |
63+
| Purpose | Methodology |
64+
| ------------------- | ---------------------- |
65+
| Project versionning | [SemVer] |
66+
| Commit messages | [Conventional Commits] |
67+
| Branch naming | [Conventional Branch] |
68+
| Branching model | [GitHub Flow] |
69+
| Changes submission | GitHub Pull Requests |
70+
| Issue tracking | GitHub Issues |
7471

7572
| Purpose | Tool |
7673
| ----------------------------- | -------------------------------------------- |
@@ -89,50 +86,41 @@ LogOut/
8986
| Rust debugging | [lldb] |
9087
| Code edition | Allows modern Rust dev ([Helix], [VS Code]…) |
9188

92-
| Purpose | Methodology |
93-
| ------------------- | ---------------------- |
94-
| Project versionning | [SemVer] |
95-
| Commit messages | [Conventional Commits] |
96-
| Branch naming | [Conventional Branch] |
97-
| Branching model | [GitHub Flow] |
98-
| Changes submission | GitHub Pull Requests |
99-
| Issue tracking | GitHub Issues |
89+
| Purpose | Library |
90+
| -------------------------------------------------------- | ---------- |
91+
| Main UI reactive framework | [Dioxus] |
92+
| (De)Serialization, data models and persistence | [Serde] |
93+
| PWA Workouts and custom exercises storage ([IndexedDB]) | [Rexie] |
94+
| Native Workouts and custom exercises storage ( [SQLite]) | [Rusqlite] |
95+
| Asynchronous HTTP client | [Reqwest] |
96+
| Date and time manipulation (UTC/Local offsets) | [Time] |
97+
| Async runtime for the native application target. | [Tokio] |
98+
| Bindings to browser APIs (Service Worker…) | [Web-sys] |
10099

101100
## Building & Running
102101

103-
The project provides a [Nix] development shell with all required dependencies
104-
(Rust, Dioxus CLI, Android SDK…). With Nix installed, enter the shell with
105-
`nix develop`. Preferably, with Direnv installed, allow the automatic
106-
development shell loading with `direnv allow`.
107-
108-
### Building the PWA
109-
110-
To build for web as a PWA, run
102+
The project uses [Nix] to download all (proper versions of) required
103+
dependencies, configure the development environment (shell) and build the
104+
application, reproducibly. The [Nix] environment and tooling is defined in
105+
[`flake.nix`](./flake.nix), enable it with `nix develop` or automatically with
106+
an allowed [`.envrc`](./.envrc) and [`direnv`] (recommended):
111107

112-
```sh
113-
dx build --web --release
114-
```
108+
For release builds, we prefer pure reproducible `nix build`, but for development
109+
speed, it is recommended to use the hot-reloading `dx serve`.
115110

116-
Output is written to `target/dx/log-out/release/web/public/`.
111+
### Android Native APK
117112

118-
To serve the PWA locally with hot-reload during development, run
113+
We currently don’t support pure `nix build` for Android. To build the native
114+
Android APK, run the following from an activadet development shell:
119115

120116
```sh
121-
dx serve # Serves at http://localhost:8080
117+
dx build --android --release --target aarch64-linux-android # Your desired arch
122118
```
123119

124-
### Building the Android App
120+
> APK is signed with [`apk-sign.sh`](.script/apk-sign.sh) after the build, to
121+
> keep it reproducible and because Dioxus requires secrets in clear in VCS
125122
126-
To build for Android as APK, run
127-
128-
```sh
129-
dx build --android --release --target aarch64-linux-android
130-
```
131-
132-
> Dioxus `0.7` don’t yet supports signing (it does, but keys have to be in clear
133-
> in `Dioxus.toml`) the APK, so we use `.script/android-sign.sh`.
134-
135-
## Code Conventions & Contributing
123+
## Engineering Principles & Contributing
136124

137125
Sometimes, we need to make tradeoffs between different positives outcomes.
138126
LogOut follows that priority order:
@@ -221,7 +209,7 @@ Follow this contribution process, based on [GitHub Flow], [Conventional Branch]:
221209
4. Fulfill the **PR** template checks before marking it ready for review
222210
5. Fix your code if it don’t pass [CI checks](#continuous-integration-ci)
223211

224-
## Continuous Integration (CI)
212+
## Continuous Integration & Continuous Deployment (CI / CD)
225213

226214
[LogOut] keep high standards of code quality and reliability. Every change must
227215
pass through a pull-request (PR), and every below check (that runs on pushes on
@@ -241,8 +229,6 @@ PRs) must pass (for some, at a certain level) for it to be merged into `main`.
241229
- Web Maestro **end-to-end tests** with `maestro test maestro/web`
242230
- Publish a report with screenshots of failed E2E tests as a PR comment
243231

244-
## Continuous Deployment (CD)
245-
246232
[LogOut] stays continuously fresh and up-to-date thanks to its automated
247233
deployment pipeline running at every push on `main` branch (coming only from
248234
validated PRs), on standard Linux runners.
@@ -257,7 +243,7 @@ validated PRs), on standard Linux runners.
257243
CD also runs when a [SemVer] `vMAJOR.MINOR.PATCH` **tag** is pushed, publishing
258244
a “Stable” GitHub Release with a production Android APK buit on this `tag`.
259245

260-
## Weekly Deep Checks
246+
### Weekly Deep Checks
261247

262248
[LogOut] ensures high quality code while with additional ressource intensive
263249
checks that run every Sunday at midnight on the `main` branch.
@@ -291,7 +277,6 @@ checks that run every Sunday at midnight on the `main` branch.
291277
[llvm-cov]: https://llvm.org/docs/CommandGuide/llvm-cov.html
292278
[Maestro]: https://maestro.dev
293279
[Nix]: https://nixos.org
294-
[Rust]: https://www.rust-lang.org
295280
[rust-analyzer]: https://rust-analyzer.github.io
296281
[rust]: https://www.rust-lang.org
297282
[rustc]: https://doc.rust-lang.org/rustc

0 commit comments

Comments
 (0)