diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
new file mode 100644
index 00000000..477f7485
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -0,0 +1,79 @@
+name: Bug Report
+description: Report a problem or unexpected behavior in Orbit
+title: "[Bug]: "
+labels:
+ - bug
+body:
+ - type: markdown
+ attributes:
+ value: |
+ Thanks for reporting a bug!
+
+ Please make sure you are using the latest version and have checked existing issues first.
+
+ - type: textarea
+ id: description
+ attributes:
+ label: Description
+ description: Describe the issue and what happened.
+ placeholder: Explain what went wrong.
+ validations:
+ required: true
+
+ - type: textarea
+ id: expected
+ attributes:
+ label: Expected Behavior
+ description: What should have happened instead?
+ validations:
+ required: true
+
+ - type: textarea
+ id: reproduce
+ attributes:
+ label: Steps To Reproduce
+ description: Provide steps someone else can follow to reproduce this.
+ placeholder: |
+ 1. Start Orbit
+ 2. Open...
+ 3. Click...
+ 4. Observe...
+ validations:
+ required: true
+
+ - type: input
+ id: version
+ attributes:
+ label: Orbit Version
+ placeholder: "Example: v3.0.0"
+ validations:
+ required: true
+
+ - type: dropdown
+ id: deployment
+ attributes:
+ label: Deployment Type
+ options:
+ - Self-hosted
+ - Development environment
+ - Other
+ validations:
+ required: true
+
+ - type: textarea
+ id: environment
+ attributes:
+ label: Environment
+ description: Include OS, architecture, Node/Bun version, database, and other relevant details.
+ placeholder: |
+ OS:
+ Architecture:
+ Bun version:
+ Database:
+
+ - type: textarea
+ id: logs
+ attributes:
+ label: Logs
+ description: Include relevant logs or errors.
+ render: shell
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 00000000..7169638d
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,8 @@
+blank_issues_enabled: false
+contact_links:
+ - name: Orbit Documentation
+ url: https://docs.planetaryapp.us/
+ about: Read the documentation before opening an issue.
+ - name: Orbit Discord
+ url: https://discord.gg/M3CX76KQsK
+ about: Ask questions and get community help.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml
new file mode 100644
index 00000000..254c1f09
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.yml
@@ -0,0 +1,51 @@
+name: Feature Request
+description: Suggest an improvement or new feature for Orbit
+title: "[Feature]: "
+labels:
+ - enhancement
+body:
+ - type: markdown
+ attributes:
+ value: |
+ Thanks for suggesting an improvement!
+
+ Large features may require an RFC before implementation.
+
+ - type: textarea
+ id: problem
+ attributes:
+ label: Problem
+ description: What problem would this feature solve?
+ placeholder: Explain the use case.
+ validations:
+ required: true
+
+ - type: textarea
+ id: solution
+ attributes:
+ label: Proposed Solution
+ description: Describe what you would like Orbit to do.
+ validations:
+ required: true
+
+ - type: textarea
+ id: alternatives
+ attributes:
+ label: Alternatives
+ description: Are there existing workarounds or other solutions?
+
+ - type: textarea
+ id: impact
+ attributes:
+ label: User Impact
+ description: Who would benefit from this feature and why?
+
+ - type: checkboxes
+ id: checks
+ attributes:
+ label: Checklist
+ options:
+ - label: I have checked that this feature does not already exist.
+ required: true
+ - label: I have searched existing issues for similar requests.
+ required: true
diff --git a/.github/ISSUE_TEMPLATE/rfc.yml b/.github/ISSUE_TEMPLATE/rfc.yml
new file mode 100644
index 00000000..f1c40dc8
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/rfc.yml
@@ -0,0 +1,59 @@
+name: RFC Proposal
+description: Propose a major feature or architectural change
+title: "[RFC]: "
+labels:
+ - rfc
+body:
+ - type: markdown
+ attributes:
+ value: |
+ RFCs are for major changes that require community and maintainer feedback before implementation.
+
+ Examples:
+ - New major systems
+ - Large features
+ - Architecture changes
+ - Database redesigns
+ - Replacing major dependencies
+
+ - type: textarea
+ id: summary
+ attributes:
+ label: Summary
+ description: Describe the proposed change.
+ validations:
+ required: true
+
+ - type: textarea
+ id: problem
+ attributes:
+ label: Problem
+ description: What problem does this solve?
+ validations:
+ required: true
+
+ - type: textarea
+ id: design
+ attributes:
+ label: Proposed Design
+ description: Explain how this should work.
+ validations:
+ required: true
+
+ - type: textarea
+ id: alternatives
+ attributes:
+ label: Alternatives Considered
+ description: What other approaches were considered?
+
+ - type: textarea
+ id: impact
+ attributes:
+ label: Impact
+ description: Explain user, developer, and compatibility impact.
+
+ - type: textarea
+ id: questions
+ attributes:
+ label: Open Questions
+ description: What feedback do you need from contributors?
diff --git a/.github/PULL_REQUEST_TEMPLATE/feature.md b/.github/PULL_REQUEST_TEMPLATE/feature.md
new file mode 100644
index 00000000..14652511
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE/feature.md
@@ -0,0 +1,55 @@
+# Pull Request
+
+Thank you for contributing to Orbit! 🐈
+
+Before submitting, please make sure you have read the [Contributing Guide](https://github.com/PlanetaryOrbit/orbit/blob/main/CONTRIBUTING.md).
+
+## Description
+
+
+
+## Related Issues
+
+
+
+## Type of Change
+
+- [ ] Bug fix
+- [ ] New feature
+- [ ] Enhancement
+- [ ] Documentation
+- [ ] Refactor
+- [ ] Performance improvement
+- [ ] Dependency update
+- [ ] Other
+
+## Testing
+
+Describe how you tested your changes.
+
+- [ ] Tested locally
+- [ ] Tested using Docker
+- [ ] Tested database changes (if applicable)
+
+## Screenshots / Videos
+
+
+
+## Checklist
+
+- [ ] I have read the contributing guidelines.
+- [ ] My changes follow the project's style guidelines.
+- [ ] I have tested my changes.
+- [ ] I have updated documentation if needed.
+- [ ] This PR does not contain unrelated changes.
+
+## Additional Notes
+
+
diff --git a/.github/PULL_REQUEST_TEMPLATE/rfc.md b/.github/PULL_REQUEST_TEMPLATE/rfc.md
new file mode 100644
index 00000000..ac4b27a4
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE/rfc.md
@@ -0,0 +1,74 @@
+# RFC:
+
+Thank you for proposing a change to Orbit.
+
+RFCs are required for major features, large architectural changes, and changes that significantly affect users or maintainers.
+
+## Summary
+
+
+
+## Problem
+
+
+
+## Proposed Solution
+
+
+
+## Alternatives Considered
+
+
+
+## Impact
+
+### Users
+
+
+
+### Developers
+
+
+
+### Compatibility
+
+
+
+## Implementation Plan
+
+
+
+1.
+2.
+3.
+
+## Open Questions
+
+
+
+## Additional Notes
+
+
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
new file mode 100644
index 00000000..f4925979
--- /dev/null
+++ b/.github/pull_request_template.md
@@ -0,0 +1,10 @@
+# Orbit Pull Request
+
+Please select the appropriate pull request template:
+
+- [Normal Pull Request](?expand=1&template=feature.md)
+- [RFC Pull Request](?expand=1&template=rfc.md)
+
+If you are unsure which template to use, please read the [Contributing Guide](https://github.com/PlanetaryOrbit/orbit/blob/main/CONTRIBUTING.md).
+
+After selecting a template, go to the **Preview** tab and click the link above.
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index f9baeb03..918c86a9 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -1,52 +1,48 @@
-# Contributor Covenant Code of Conduct
+# Code of Conduct - Orbit
## Our Pledge
-We as members, contributors, and leaders pledge to make participation in our
-community a harassment-free experience for everyone, regardless of age, body
-size, visible or invisible disability, ethnicity, sex characteristics, gender
-identity and expression, level of experience, education, socio-economic status,
-nationality, personal appearance, race, religion, or sexual identity
-and orientation.
-
-We pledge to act and interact in ways that contribute to an open, welcoming,
-diverse, inclusive, and healthy community.
+In the interest of fostering an open and welcoming environment, we as
+contributors and maintainers pledge to make participation in our project and
+our community a harassment-free experience for everyone, regardless of age, body
+size, disability, ethnicity, sex characteristics, gender identity and expression,
+level of experience, education, socio-economic status, nationality, personal
+appearance, race, religion, or sexual identity and orientation.
## Our Standards
-Examples of behavior that contributes to a positive environment for our
+Examples of behaviour that contributes to a positive environment for our
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
-* Accepting responsibility and apologizing to those affected by our mistakes,
- and learning from the experience
+* Accepting responsibility and apologising to those affected by our mistakes,
+and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
- overall community
+overall community
-Examples of unacceptable behavior include:
+Examples of unacceptable behaviour include:
-* The use of sexualized language or imagery, and sexual attention or
- advances of any kind
+* The use of sexualised language or imagery, and sexual attention or advances
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
- address, without their explicit permission
+address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
- professional setting
+professional setting
-## Enforcement Responsibilities
+## Our Responsibilities
-Community leaders are responsible for clarifying and enforcing our standards of
-acceptable behavior and will take appropriate and fair corrective action in
-response to any behavior that they deem inappropriate, threatening, offensive,
-or harmful.
+Project maintainers are responsible for clarifying and enforcing our standards of
+acceptable behaviour and will take appropriate and fair corrective action in
+response to any behaviour that they deem inappropriate,
+threatening, offensive, or harmful.
-Community leaders have the right and responsibility to remove, edit, or reject
+Project maintainers have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
-not aligned to this Code of Conduct, and will communicate reasons for moderation
-decisions when appropriate.
+not aligned to this Code of Conduct, and will
+communicate reasons for moderation decisions when appropriate.
## Scope
@@ -58,9 +54,8 @@ representative at an online or offline event.
## Enforcement
-Instances of abusive, harassing, or otherwise unacceptable behavior may be
-reported to the community leaders responsible for enforcement at
-contact@sleepylab.ca.
+Instances of abusive, harassing, or otherwise unacceptable behaviour may be
+reported to the community leaders responsible for enforcement at .
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
@@ -73,19 +68,19 @@ the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
-**Community Impact**: Use of inappropriate language or other behavior deemed
+**Community Impact**: Use of inappropriate language or other behaviour deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
-behavior was inappropriate. A public apology may be requested.
+behaviour was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series
of actions.
-**Consequence**: A warning with consequences for continued behavior. No
+**Consequence**: A warning with consequences for continued behaviour. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
@@ -95,7 +90,7 @@ permanent ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
-sustained inappropriate behavior.
+sustained inappropriate behaviour.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
@@ -106,7 +101,7 @@ Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
-standards, including sustained inappropriate behavior, harassment of an
+standards, including sustained inappropriate behaviour, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within
@@ -114,15 +109,6 @@ the community.
## Attribution
-This Code of Conduct is adapted from the [Contributor Covenant][homepage],
-version 2.0, available at
-https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
-
-Community Impact Guidelines were inspired by [Mozilla's code of conduct
-enforcement ladder](https://github.com/mozilla/diversity).
-
-[homepage]: https://www.contributor-covenant.org
-
-For answers to common questions about this code of conduct, see the FAQ at
-https://www.contributor-covenant.org/faq. Translations are available at
-https://www.contributor-covenant.org/translations.
+This Code of Conduct is adapted from the [Contributor Covenant](https://contributor-covenant.org/), version
+[1.4](https://www.contributor-covenant.org/version/1/4/code-of-conduct/code_of_conduct.md) and
+[2.0](https://www.contributor-covenant.org/version/2/0/code_of_conduct/code_of_conduct.md).
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index a60b9388..374817a9 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,166 +1,375 @@
# Contributing to Orbit
-Thanks for your interest in contributing to Orbit! This document covers everything you need to get a local development environment running and to submit changes back to the project.
+First off, thanks for taking the time to contribute! :heart:
+
+All types of contributions are encouraged and valued. See the [Table of Contents](#table-of-contents) for different ways to help and details about how this project handles them. Please make sure to read the relevant section before making your contribution. It will make things smoother for maintainers and contributors alike. The community looks forward to your contributions! 🐈
+
+> If you like Orbit but don't have time to contribute code, that's okay! There are other ways to support the project:
+>
+> - Star the repository
+> - Share Orbit with others
+> - Mention Orbit in your project's README
+> - Tell friends, colleagues, or local communities about the project
+
+A quick note before you contribute:
+
+> Orbit is an open source project owned by Planetary, a product of Sleepy Lab. Day-to-day development and community management are currently handled by @buddywinte on Planetary's behalf.
+
+---
## Table of Contents
- [Code of Conduct](#code-of-conduct)
-- [Ways to Contribute](#ways-to-contribute)
-- [Development Setup](#development-setup)
-- [Project Structure](#project-structure)
-- [Making Changes](#making-changes)
-- [Commit Guidelines](#commit-guidelines)
-- [Submitting a Pull Request](#submitting-a-pull-request)
+- [I Have a Question](#i-have-a-question)
+- [I Want To Contribute](#i-want-to-contribute)
- [Reporting Bugs](#reporting-bugs)
-- [Requesting Features](#requesting-features)
-- [Getting Help](#getting-help)
+- [Suggesting Enhancements](#suggesting-enhancements)
+- [Request For Comment (RFC)](#request-for-comment-rfc)
+- [Your First Code Contribution](#your-first-code-contribution)
+- [Improving The Documentation](#improving-the-documentation)
+- [Styleguides](#styleguides)
+- [Commit Messages](#commit-messages)
+- [Join The Project Team](#join-the-project-team)
---
## Code of Conduct
-Be respectful, constructive, and patient. We're a small team maintaining this in our spare time, and so are many of our contributors. Harassment, discrimination, or hostility of any kind will not be tolerated in issues, pull requests, or our Discord server.
+This project and everyone participating in it is governed by the
+[Orbit Code of Conduct](https://github.com/PlanetaryOrbit/orbit/blob/main/CODE_OF_CONDUCT.md).
+
+By participating, you are expected to uphold this code.
+
+Please report unacceptable behavior to [contact@sleepylab.ca](mailto:contact@sleepylab.ca).
---
-## Ways to Contribute
+## I Have a Question
+
+> Before asking a question, please make sure you have read the available [documentation](https://docs.planetaryapp.us/).
+
+Before asking, check whether your question has already been answered:
+
+- Search existing [GitHub Issues](https://github.com/PlanetaryOrbit/orbit/issues).
+- Check the documentation.
+- Search for existing discussions or solutions online.
+- Ask in our [Discord server](https://discord.gg/M3CX76KQsK).
+
+Orbit does not use GitHub Discussions. Questions should either be asked through Issues or Discord.
-You don't have to write code to help out:
+If you still need help:
-- **Report bugs** via our [feedback portal](https://feedback.planetaryapp.us/bugs)
-- **Suggest features** via the same [feedback portal](https://feedback.planetaryapp.us/bugs)
-- **Improve documentation** — typos, unclear instructions, missing sections
-- **Fix bugs or implement features** via pull request
-- **Help other users** in our [Discord server](https://discord.com/invite/mWqdZmEkDc)
-- **Review open pull requests** and leave feedback
+- Open a GitHub Issue.
+- Provide as much context as possible.
+- Include relevant versions and environment details.
+- Explain what you have already tried.
---
-## Development Setup
+# I Want To Contribute
+
+> ## Contributor Agreement
+>
+> By contributing to Orbit, you confirm that:
+>
+> - You are the original author of your contribution, or have permission to submit it.
+> - You have the necessary rights to submit the contribution.
+> - Your contribution may be distributed, modified, and maintained as part of Orbit under the project's license.
+
+There are many ways to contribute, including:
+
+- Reporting bugs
+- Suggesting improvements
+- Improving documentation
+- Fixing issues
+- Adding features
+- Helping review pull requests
+
+For small changes, normal pull requests are welcome.
+
+For large changes, please read the [Request For Comment (RFC)](#request-for-comment-rfc) section before starting work.
+
+---
+
+# Request For Comment (RFC)
+
+RFCs (Request For Comment) are used for major changes that could significantly affect Orbit.
+
+An RFC is required for changes such as:
+
+- Large new features
+- Major system additions
+- New core functionality
+- Significant architecture changes
+- Database schema changes that affect many systems
+- Replacing major dependencies or technologies
+- Changes that affect how users interact with Orbit
+
+Examples of changes that would require an RFC:
+
+- Adding an entirely new system such as forms, workflows, or permissions.
+- Replacing a major framework or service.
+- Redesigning a core part of Orbit.
+
+The purpose of an RFC is to allow maintainers and contributors to discuss the design before implementation begins.
+
+## Creating an RFC
+
+To create an RFC:
+
+1. Open a pull request containing your RFC document.
+2. Clearly explain:
+ - What problem the change solves.
+ - Why the change is needed.
+ - How the proposed solution works.
+ - Alternatives that were considered.
+ - Any potential drawbacks or risks.
+3. Allow time for community and maintainer feedback.
+
+RFC pull requests are for discussion and feedback. They do not immediately merge the implementation.
+
+After an RFC has been approved, implementation can begin through normal pull requests.
+
+> Small fixes, bug fixes, and minor improvements do not require an RFC. Use your best judgment, or ask a maintainer if you are unsure.
+
+---
+
+# Reporting Bugs
+
+## Before You Submit a Bug Report
+
+Before opening an issue, please make sure the problem has not already been reported and is not caused by your environment.
+
+Please:
+
+- Ensure you are running the latest version of Orbit.
+- Confirm the issue is not caused by unsupported software or configuration.
+- Read the documentation.
+- Search existing issues.
+- Check whether others have experienced the same issue.
+
+When preparing your report, include:
+
+- Whether this is a self-hosted instance.
+- Operating system, platform, and architecture.
+- Orbit version.
+- Steps to reproduce the issue.
+- Whether it occurs on older versions.
+
+> ## Unsupported Platforms
+>
+> Orbit does not officially support Vercel, Cloudflare Workers, or other serverless platforms.
+>
+> Issues caused by unsupported environments may be closed without investigation.
+
+````md
+## How Do I Submit a Good Bug Report?
+
+> ## Security Notice
+>
+> Do **not** report security vulnerabilities, exploits, or issues containing sensitive information publicly through GitHub Issues.
+>
+> Security-related reports should be sent privately to [IT@planetaryapp.us](mailto:IT@planetaryapp.us).
+
+Orbit uses GitHub Issues to track bugs and unexpected behavior.
-### Prerequisites
+When opening a bug report:
-- [Node.js](https://nodejs.org) (LTS recommended)
-- [npm](https://www.npmjs.com) or a compatible package manager (eg. pnpm)
-- A Prisma-compatible database (PostgreSQL recommended) — [Supabase](https://supabase.com), [Railway](https://railway.app), or [Neon](https://neon.tech) all work well for local/dev use
+- Use a clear and descriptive title.
+- Explain what you expected to happen.
+- Explain what actually happened.
+- Include detailed reproduction steps.
+- Include logs, screenshots, or recordings where helpful.
+- Provide a minimal reproduction case if possible.
+
+After submitting:
+
+- A maintainer will review and triage the issue.
+- Issues missing enough information may be marked as `needs-repro`.
+- Confirmed bugs may be labeled `needs-fix`, `critical`, or other relevant labels.
+- Confirmed issues may be picked up by contributors.
+
+---
+
+# Suggesting Enhancements
+
+Enhancement suggestions include new features, improvements to existing functionality, and quality-of-life changes.
+
+Before suggesting an enhancement:
+
+- Make sure you are using the latest version.
+- Read the documentation to ensure the feature does not already exist.
+- Search existing issues to see if the suggestion has already been made.
+- Consider whether the feature fits Orbit's goals and intended use cases.
+
+Features should generally benefit a significant portion of Orbit users.
+
+If your idea only benefits a very specific use case, consider whether it would be better suited as a plugin, extension, or external tool.
+
+## How Do I Submit a Good Enhancement Suggestion?
+
+Enhancement suggestions are tracked through GitHub Issues.
+
+When creating one:
+
+- Use a clear and descriptive title.
+- Explain the problem your suggestion solves.
+- Describe the current behavior.
+- Describe the expected behavior.
+- Explain why this would be useful for Orbit users.
+- Include screenshots, mockups, or examples if applicable.
+- Mention similar solutions from other projects if they exist.
+
+Large feature suggestions may require an [RFC](#request-for-comment-rfc) before implementation.
+
+---
+
+# Your First Code Contribution
+
+Before contributing code, make sure you have:
+
+- [Node.js](https://nodejs.org/)
+- [Bun](https://bun.sh/)
+- [Docker](https://www.docker.com/)
- Git
+- A Prisma-compatible database (PostgreSQL recommended)
-### Setup Steps
+> All pull requests containing code changes must be tested using Docker before being submitted.
+>
+> This ensures changes work in an environment close to how Orbit is deployed.
-1. **Fork** the repository, then clone your fork:
+## Development Setup
+
+### 1. Fork and Clone Orbit
```bash
- git clone https://github.com//orbit.git
- cd orbit
-```
+git clone https://github.com//orbit.git
+cd orbit
+````
-2. **Install dependencies:**
+### 2. Install Dependencies
```bash
- npm install
+bun install
```
-3. **Set up environment variables.** Create a `.env` file in the project root:
+### 3. Configure Environment Variables
-```env
- SESSION_SECRET= # generate with: openssl rand -base64 32
- DATABASE_URL= # your database connection string
- PUBLIC_URL= # e.g. http://localhost:3000
+Copy `.env.example` to `.env` and configure the required variables.
+
+### 4. Setup the Database
+
+Generate the Prisma client and apply the database schema:
+
+```bash
+bunx prisma db push
+bunx prisma generate
```
-4. **Push the database schema and generate the Prisma client:**
+Alternatively, you can start the database container:
```bash
- npx prisma db push
- npx prisma generate
+docker compose up -d db
```
-5. **Run the development server:**
+### 5. Start Orbit
```bash
- npm run dev
+bun run dev
```
- Orbit should now be running at `http://localhost:3000`.
+Orbit should now be available at:
+
+```
+https://localhost:3000
+```
+
+(or another configured port)
---
-## Project Structure
+# Improving The Documentation
+
+Documentation improvements are always welcome.
-Orbit is a TypeScript project built on:
+Before submitting documentation changes:
-- **Frontend:** Next.js, TailwindCSS
-- **Backend:** Next.js API routes, Prisma ORM
-- **Database:** Any Prisma-compatible database (PostgreSQL recommended)
+* Read the existing documentation.
+* Keep documentation accurate and easy to understand.
+* Explain your documentation changes in your pull request.
-Familiarize yourself with the existing folder structure before adding new files — try to follow the conventions already in place rather than introducing new patterns.
+Documentation changes usually do not require an RFC unless they introduce a major change to how Orbit works.
---
-## Making Changes
+# Pull Request Guidelines
-1. Create a new branch off `main` with a descriptive name:
+Before opening a pull request:
-```bash
- git checkout -b fix/session-timezone-bug
- # or
- git checkout -b feat/bulk-member-export
-```
+* Make sure your changes are tested.
+* Keep commits focused and understandable.
+* Update documentation when needed.
+* Follow the project's coding style.
+* Avoid unrelated changes in the same pull request.
-2. Make your changes, following the existing code style (formatting, naming conventions, file organization).
+For major changes, ensure an RFC has been approved before submitting implementation work.
-3. Keep changes focused — one bug fix or feature per pull request makes review much faster.
+Maintainers may request changes before a pull request can be merged.
-4. Test your changes locally. If you've touched anything Prisma-related, make sure `npx prisma db push` runs cleanly and existing functionality still works.
+---
-5. Update documentation (README, code comments, or docs at [docs.planetaryapp.us](https://docs.planetaryapp.us)) if your change affects setup, configuration, or user-facing behavior.
+# Commit Messages
----
+Good commit messages make it easier to understand project history.
-## Commit Guidelines
+Recommended format:
-- Write clear, descriptive commit messages (e.g. `Fixed quota calculation for weekly resets`, not `fixed bug`).
-- Keep commits reasonably scoped — avoid bundling unrelated changes together.
-- Reference related issues where relevant (e.g. `Closes #123`).
+```
+type: short description
+```
----
+Examples:
-## Submitting a Pull Request
+```
+feat: add workspace forms
+fix: prevent websocket reconnect loop
+docs: update contribution guide
+refactor: simplify cache handling
+```
-1. Push your branch to your fork and open a pull request against `main`.
-2. Give your PR a clear title and description:
- - What does this change do?
- - Why is it needed?
- - Any screenshots for UI changes are appreciated.
-3. Link any related issues or feedback-portal reports.
-4. Be responsive to review feedback — we may ask for changes before merging.
-5. Once approved, a maintainer will merge your PR.
+Keep commit messages:
-Note: since Orbit's beta focus is on stability and matching Planetary Cloud's hosting environment, please flag in your PR description if a change has implications for serverless/Vercel deployments specifically.
+* Short and descriptive.
+* Written in the present tense.
+* Focused on one change.
---
-## Reporting Bugs
+# Join The Project Team
+
+Orbit contributors who consistently provide helpful contributions may be invited to join the project team.
+
+Maintainer access is given based on:
-Please use the [feedback portal](https://feedback.planetaryapp.us/bugs) rather than opening a GitHub issue directly. When reporting, include:
+* Quality of contributions.
+* Understanding of Orbit's goals.
+* Ability to collaborate with other contributors.
+* Long-term involvement.
-- Steps to reproduce
-- Expected vs. actual behavior
-- Whether you're using Planetary Cloud, Vercel, or self-hosting
-- Relevant logs or screenshots
+Becoming a contributor does not automatically grant repository access. Maintainer roles are assigned by the existing project team.
---
-## Requesting Features
+# Legal Notice
-Feature requests also go through the [feedback portal](https://feedback.planetaryapp.us/bugs). This helps us track and prioritize requests in one place alongside bug reports.
+Orbit is owned by Planetary, a product of Sleepy Lab (a division of Sleepy Lab Innovations Inc.).
----
+© 2026 Sleepy Lab Innovations Inc. All rights reserved.
+
+Planetary and Orbit are not affiliated with or endorsed by Relatio (formerly Tovy). References to the Tovy project are provided for attribution purposes only and do not imply any partnership or sponsorship.
-## Getting Help
+Original Tovy code © 2022 Tovy. Modifications and new features © 2026 Planetary.
-- **Documentation:** [docs.planetaryapp.us](https://docs.planetaryapp.us)
-- **Discord:** [Join our server](https://discord.com/invite/mWqdZmEkDc) for questions, discussion, and contributor chat
-- **Changelog:** [feedback.planetaryapp.us/changelog](https://feedback.planetaryapp.us/changelog)
+Sleepy Lab Innovations Inc. is not affiliated with Roblox Corporation or Discord Inc.
-Thanks again for helping improve Orbit — we appreciate it!
\ No newline at end of file
+For legal inquiries, contact [contact@sleepylab.ca](mailto:contact@sleepylab.ca).