First off, thank you for considering contributing to Noeko! We welcome any help, from reporting bugs, to working on our design system, to submitting new features. This document provides guidelines to help you get started.
Before you can work on the code, you'll need to set up the development environment. We offer two primary methods: using Docker (recommended for a consistent, isolated environment) or running directly on your host machine.
Both methods require you to have a .env file. You can create one by copying the example:
cp .env.example .envAfter copying, be sure to review and fill in the necessary values in your new .env file.
This method containerizes all services (database, backend, frontend), ensuring a consistent environment.
Prerequisites:
Setup Command:
bun run dev:dockerThis single command will:
- Start the SurrealDB database via Docker Compose.
- Start a container for the backend server with hot-reloading.
- Start a container for the frontend Vite server with hot-reloading.
You can access the frontend at http://localhost:5173 and the backend API at the port specified in your .env file (e.g., http://localhost:3400).
This method runs the backend and frontend servers directly on your machine, while still using Docker for the database.
Prerequisites:
Setup Command:
bun run devThis command will:
- Start the SurrealDB database in Docker.
- Start the backend server on your host machine with hot-reloading.
- Start the frontend Vite server on your host machine with hot-reloading.
app/: Contains all backend server code (Express).src/: Contains all frontend client code (React, Vite).shared/: TypeScript types and code shared between the frontend and backend.docker/: Holds theDockerfilefor building the production image.scripts/: Contains useful administrative and database management scripts.package.json: Defines all project scripts, dependencies, and core workflows.
The package.json file is the central place for all project commands. Here are the most important ones:
bun run dev: Starts the full development environment on your host machine (with a Dockerized DB).bun run dev:docker: Starts the full development environment completely inside Docker containers.bun run build: Creates a production-ready build of both the frontend and backend.bun run start: Runs the pre-built application in production mode.bun run test: Runs the entire test suite.bun run lint: Checks the code for style and formatting issues.bun run db:sql: Opens an interactive SQL shell inside the database container.
Note
If you plan to use AI coding tools in your PR, that's totally cool! However, please review our AI Policy to keep things up to standard.
We use the standard GitHub flow for contributions.
- Fork the repository to your own GitHub account.
- Clone your fork to your local machine.
- Create a new branch for your changes (
git checkout -b my-new-feature). - Make your changes.
- Test your changes by running
bun run test. - (skip for now, linting is currently broken) Lint your code by running
bun run lint. - Commit your changes with a clear and descriptive commit message following the conventional commits standard.
- Push your changes to your fork on GitHub (
git push origin my-new-feature). - Open a Pull Request from your fork to the main Noeko repository.
Thank you again for your contribution!