Platform Development Guide
Platform Development Guide
The ToekomstTech platform is open-source and built by members. If you've found a bug, have a feature idea, or want to understand how it works, this is the right place to start.
Tech stack
| Layer | Technology |
|---|---|
| Frontend | SvelteKit (TypeScript) |
| Backend / DB | Appwrite (self-hosted) |
| Hosting | Docker Compose on a VPS in Amsterdam |
| Auth | Appwrite Auth (email/password + OAuth) |
| Styling | Tailwind CSS |
| Deployment | Automated via GitHub Actions |
The entire stack runs on a single VPS managed by the tech team. Appwrite handles auth, database, storage, and functions — the SvelteKit app consumes it entirely via the Appwrite SDK.
Repository
The main repository is at: github.com/toekomsttech/platform
The repo is private to members, but any active member can request access. Post in #tech on Slack with your GitHub username.
Local development setup
# Clone the repo
git clone git@github.com:toekomsttech/platform.git
cd platform
# Install dependencies
npm install
# Copy the environment file and fill in your values
cp .env.example .env.local
# Edit .env.local with your Appwrite endpoint and project ID
# Start the dev server
npm run dev
You'll need an Appwrite account with access to the project. Ask in #tech on Slack for a dev API key.
Project structure
src/
lib/
appwrite.ts — Appwrite client setup
auth.ts — Auth helpers and stores
wiki.ts — Wiki CRUD operations
members.ts — Member queries
routes/
wiki/ — Wiki pages (read + edit)
members/ — Member directory
projects/ — Project pages
events/ — Event listing and management
profile/ — User profile
api/ — SvelteKit server routes (for MCP API, webhooks)
components/
Nav.svelte
WikiEditor.svelte
PresenceWidget.svelte
...
scripts/
setup-collections.js — Creates Appwrite collections
seed-wiki.js — Seeds initial wiki content
Making changes
- Create a branch from
main:git checkout -b feature/your-feature-name - Make your changes. The dev server has hot module replacement — changes are immediate.
- Write or update tests if relevant (
npm test). - Push your branch and open a Pull Request on GitHub.
- A member of the tech team will review it — usually within a day or two.
For significant changes, open an issue first to discuss the approach. This saves everyone time.
Database schema
The Appwrite database (toekomsttech) has the following collections:
| Collection | Purpose |
|---|---|
members |
Member profiles, role, presence opt-in |
wiki_pages |
Wiki page content and hierarchy |
wiki_revisions |
Full revision history for wiki pages |
projects |
Member projects |
events |
Events and RSVPs |
inventory |
Tools and equipment |
loans |
Tool checkout/return log |
Full schema is in scripts/setup-collections.js.
Reporting bugs
Post in #tech on Slack with:
- What you were trying to do
- What happened
- What you expected to happen
- Browser and OS (for frontend bugs)
Or open a GitHub issue if you have repo access. We don't have a formal bug tracker — Slack works fine for a community of our size.
Feature requests
Same channel — #tech. All ideas are welcome. Implementation is done by whoever has the time and interest, so if you want something built, the fastest way is often to build it yourself.