Lapse is a place for Hack Clubbers to record and share timelapses. Integrates with Hackatime! Lapse is currently in beta.
Think of it like a fancy WakaTime plugin. Just as you can install WakaTime for VS Code, Lapse serves to be the WakaTime plugin for timelapses.
All timelapses are encrypted before being published. That means that you (and only you!) can access them. That way, we can synchronize your progress with our servers, while still making it possible for you to censor or remove anything you wouldn't want other people to see.
In order to get started with developing Lapse, run these commands:
# Install all packages
pnpm install
# Set up the development environment
pnpm dev:setup-env
# Start the web client and backend
pnpm devTo start and stop the development environment, use pnpm dev:start-env and pnpm dev:stop-env respectively.
When developing, it's a good idea to re-compile all packages on the fly!
pnpm dev:watch-allIf you're interested, you're welcome to build your own custom client! See ./docs/custom-clients.md for more info.
Lapse is meant to be deployed via Docker, featuring three main services out-of-the-box: client, server, and worker.
client: the web client server. Interfaces withserver- useDockerfile.clientto deploy this service.server: the backend server. UseDockerfile.serverto deploy this service.worker: background job worker. This service is CPU-bound - it's a good idea to put it on a beefy server! Handles tasks like encoding. UseDockerfile.workerto deploy this service.
Both server and worker interface via Redis. You can put them on separate machines, as long as both have access to the same Redis server. server additionally needs a PostgreSQL database. Schemas are automatically applied - no need for any special setup.
In order to deploy the main frontend/backend microservice, use Dockerfile.web, located in the root of this repo.
For example - when deploying with Coolify, set these settings:
Base Directory:/Dockerfile Location:/Dockerfile.webPorts Exposes:3000
You'll need at least one root user in order to promote other users to admins. The recommended way to do this is via the console.ts script of server!
cd apps/server
# You'll be taken to a REPL after launching this!
pnpm dev:consoleconnect("postgresql://postgres:postgres@localhost:5432/lapse?schema=public") // you'll probably want your production database URL here!
await promoteUser("ascpixi@hackclub.com")