Platform Development Guide

members Updated 1-7-2026

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

  1. Create a branch from main: git checkout -b feature/your-feature-name
  2. Make your changes. The dev server has hot module replacement — changes are immediate.
  3. Write or update tests if relevant (npm test).
  4. Push your branch and open a Pull Request on GitHub.
  5. 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.