Fireshare is an open-source project and contributions are welcome. Before you write a single line of code, read this page in full — the maintainer has specific expectations about workflow and communication that, if not followed, will result in your pull request being closed without review.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/ShaneIsrael/fireshare/llms.txt
Use this file to discover all available pages before exploring further.
Code Quality Expectation
The README states the maintainer’s position directly:Know how to code! I DO NOT WANT VIBE CODERS SUBMITTING PRs AI assisted coding is fine if you can read, understand, and validate AI code. Asking AI to review itself doesn’t count as reading, understanding, and validating AI code.AI-generated code is acceptable as a starting point, but you are responsible for reading every line, understanding what it does, testing it against the real application, and being able to defend it in a code review. Submitting code you do not understand will result in the PR being closed.
Branch Workflow
Fireshare uses adevelop / main two-branch model. main holds production releases; all active development flows through develop.
Fork the repository
Click Fork on the Fireshare GitHub page. Work from your own fork so you can freely push branches without needing write access to the upstream repo.
Create a branch from develop
Always branch off Replace
develop, not main:upstream with whatever remote name points to ShaneIsrael/fireshare in your local clone.Commit your changes
Make focused, well-described commits. Each commit should leave the codebase in a working state. If your change touches
models.py, ensure the corresponding migration is committed in the same branch (see Database Model Changes).Rebase on latest develop before opening a PR
Fetch the latest upstream changes and rebase your branch before you open the pull request. This keeps the history linear and makes it easier for the maintainer to review your diff:Resolve any conflicts that arise, then force-push your branch:
Discuss Before You Code
For anything beyond a small bug fix or a trivial change, open a GitHub Issue first:- Go to the issue tracker.
- Search for an existing issue that matches your idea.
- If none exists, open a new issue describing what you want to build and why.
- Wait for the maintainer to respond and agree on scope before writing any code.
Database Model Changes
If your contribution modifies any SQLAlchemy model inapp/server/fireshare/models.py, you must include a Flask-Migrate migration file in the same pull request. A schema change without a migration will break existing deployments and will be rejected.
Steps to create a migration:
migrations/versions/. Open that file and verify its contents before committing:
- Confirm that the
upgrade()function adds exactly the columns, tables, or indexes you intended. - Confirm that the
downgrade()function correctly reverses the change. - Alembic does not detect every schema difference (e.g. check constraints, server defaults, or column type changes on SQLite). Fix any gaps manually.
The
migrations/ directory uses a single-database Alembic configuration. Do not create separate migration environments for separate databases.Reporting Bugs
If you find a bug but are not opening a code contribution, file an issue on the GitHub issue tracker. Include:- Your Fireshare version (the Docker image tag or the git commit hash).
- Steps to reproduce the problem.
- What you expected to happen vs. what actually happened.
- Relevant log output from the container or the Flask dev server.
Supporting Development
If Fireshare is useful to you, the best way to support continued development is through GitHub Sponsors. Sponsorship helps keep the demo server running at demo.fireshare.net and allows the maintainer to allocate time for new features and maintenance.License
Fireshare is released under the GNU General Public License v3.0 (GPL-3.0). By submitting a pull request you agree that your contribution will be distributed under the same license.Local Setup
Get the backend and frontend running on your machine for development.
Troubleshooting
Common issues and how to resolve them.
