A web app for connecting organizations with people that want to get involved.
The site is a Vue.js app hosted on a
CDN. The client app is in this repo
under ./client/
.
The backend is a serverless
function which uses a SQLite
database and a key-value
store for storage. The backend is in
this repo under ./worker/
.
The client app and backend worker are automatically deployed to the dev
environment on pushes to main
and to the prod environment on pushes to
prod
. To deploy the worker manually, install
Rust and run:
cd ./worker/
npm install
npx wrangler deploy --env dev
npx wrangler deploy --env prod
You can build the client app locally like this:
cd ./client/
npm install
npm run build
To run the app locally, you'll need to spin up a local instance of the backend
worker. It must be running on port 8787
.
cd ./worker/
npm install
npx wrangler dev --env dev
Then you can start the local dev server.
cd ./client/
npm install
npm run dev
In the ./tests/
directory you'll find a CLI tool that provides
helpers for performing the cryptographic operations necessary to authenticate
with the backend worker. This is useful for debugging the worker locally using
a tool like Postman or Hoppscotch.
To use the tool, install Rust and run:
cd ./tests/
cargo run -- --help
In the ./tests/
directory you'll also find a test suite for the
backend worker. Once you've started the backend worker running locally, you can
run the tests like this:
cd ./tests/
cargo test
You can find documentation on how this app mitigates security risks in the security whitepaper. It is recommended that you read this document if you're planning on diving into the codebase; it provides a lot of good information on how the client talks to the backend worker.
Copyright © 2024 Lark
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.