Mirror: This repo is a read-only mirror of gitlab.com/vauchi/website. Please open issues and merge requests there.
Landing page for Vauchi at vauchi.app.
| Tool | Required | Purpose |
|---|---|---|
| Python 3 | For build scripts | Content validation and manifest generation |
| Docker | For deployment | Containerization |
| Nginx | In container | Static file serving |
pip install jsonschemaRequired for validate-content.py schema validation.
Static website explaining what Vauchi is and linking to app downloads. Also serves dynamic app content (locales, themes, networks) via JSON manifests with checksums.
website/
├── public/ # Static files served by nginx
│ ├── index.html # Main landing page
│ ├── logo.png # Brand logo
│ └── app-files/ # Generated app content (via build script)
│ ├── manifest.json # Content manifest with checksums
│ ├── networks.json # Network configurations
│ ├── locales/ # Localization files
│ └── themes/ # Theme definitions
│
├── app-files-src/ # Source content (before build)
│ ├── networks.json # Network definitions
│ ├── locales/ # Language files (en.json, etc.)
│ └── schemas/ # JSON validation schemas
│ ├── networks.schema.json
│ ├── locales.schema.json
│ └── manifest.schema.json
│
├── scripts/ # Build and validation scripts
│ ├── build-manifest.py # Build manifest and copy content
│ └── validate-content.py # Validate JSON against schemas
│
├── nginx.conf # Nginx server configuration
├── Dockerfile # Container definition
└── .gitlab-ci.yml # CI/CD pipeline
# Using Python
python -m http.server 8000 -d public
# Using Node
npx serve publicThen open http://localhost:8000
Validate and build the app-files manifest:
# Validate content against schemas
python scripts/validate-content.py
# Build manifest and copy to public/app-files/
python scripts/build-manifest.py
# With options
python scripts/build-manifest.py --version 1.0.0 --output public/app-filesValidates all JSON content files against their schemas:
python scripts/validate-content.py [--src app-files-src]
# Validates:
# - networks.json vs networks.schema.json
# - locales/*.json vs locales.schema.jsonGenerates content manifest with SHA-256 checksums:
python scripts/build-manifest.py [options]
Options:
--version VERSION Content version (default: 1.0.0)
--output DIR Output directory (default: public/app-files)
--base-url URL CDN URL (default: https://vauchi.app/app-files/)
--src DIR Source directory (default: app-files-src)The generated manifest.json contains checksums for integrity verification by the mobile apps.
# Build
docker build -t vauchi-website .
# Run
docker run -p 8080:80 vauchi-websiteDeployed via Kamal to the same server as vauchi-relay. See vauchi/infra for deployment config.
# From infra repo
kamal deploy -c config/deploy.vauchi-landing.ymlThe .gitlab-ci.yml pipeline:
- Validates content (
validate-content.py) - Builds manifest (
build-manifest.py) - Builds Docker image
- Deploys via Kamal (on main branch)
- Create
app-files-src/locales/{lang}.jsonfollowing the schema - Run
python scripts/validate-content.py - Run
python scripts/build-manifest.py - Commit and push
Themes are managed in the vauchi/themes repo. See the themes repo README for contributing instructions.
- Edit
app-files-src/networks.json - Validate and build as above
| Repository | Description |
|---|---|
| vauchi/core | Core Rust library |
| vauchi/android | Android app |
| vauchi/ios | iOS app |
| vauchi/docs | Documentation |
| vauchi/assets | Brand assets, logos |
| vauchi/infra | Deployment configs |
Vauchi is open source and community-funded — no VC money, no data harvesting.
- GitHub Sponsors
- Liberapay
- SUPPORTERS.md for sponsorship tiers
MIT