Getting Started

Before you begin, ensure you have the following prerequisites installed on your system:

Node.js & npm

Version 18.x or higher

Git

Latest stable release

Docker (Optional)

For running database services locally

Code Editor

VS Code recommended with our extension pack

Clone the repository and install dependencies:

git clone https://github.com/flowcms/flowcms.git
cd flowcms
npm install
npm run dev
💡
Once the dev server starts, visit http://localhost:3000 to explore the admin panel. The API is available at http://localhost:3001.

Development Workflow

We follow a GitFlow-inspired workflow to keep the codebase stable and reviewable.

Branch Naming Convention

PrefixPurposeExample
feat/New featuresfeat/add-webhooks
fix/Bug fixesfix/login-timeout
docs/Documentation updatesdocs/api-auth
refactor/Code improvementsrefactor/db-migration
chore/Maintenancechore/update-deps

Commit Standards

All commits must follow Conventional Commits. Pre-commit hooks are enforced via husky.

git commit -m "feat(auth): add OAuth2 provider support

Related to #142"

Submitting a Pull Request

  1. Fork the repository and create a feature branch
  2. Make your changes following our guidelines
  3. Run npm run lint and npm test
  4. Push to your fork and open a PR against main
  5. Request review from the @flowcms/core team

Code Guidelines

We use ESLint, Prettier, and TypeScript to maintain code quality. Our configuration is located in .eslintrc.json and tsconfig.json.

  • TypeScript: Strict mode enabled. Avoid any. Use interfaces for external data.
  • Formatting: Prettier runs on commit. Do not disable formatting comments.
  • Architecture: Feature-based directory structure. Keep components, services, and types co-located.
  • Error Handling: Use custom error classes. Never swallow errors silently.
  • Security: Sanitize all inputs. Use parameterized queries. Never expose secrets in code.
⚠️
Breaking changes must be tagged with BREAKING in the PR title and clearly documented in the changelog.

Testing

FlowCMS uses Vitest for unit tests and Playwright for E2E tests.

# Run all tests
npm test

# Run with coverage
npm run test:coverage

# Run E2E suite
npm run test:e2e

PRs must maintain at least 85% code coverage. New features require corresponding test files.

Documentation

All public APIs, components, and configuration options must be documented. We use Markdown and Typedoc.

  • Update docs/ for user-facing changes
  • Add JSDoc comments to exported functions/classes
  • Include code examples for complex configurations
  • Run npm run docs:build to verify rendering

Reporting Issues

Found a bug or have a feature request? Please search existing issues first. If none match, open a new one using the appropriate template:

🐛 Bug Report

Include steps to reproduce, expected vs actual behavior, and environment details.

✨ Feature Request

Describe the use case, proposed solution, and any alternatives considered.

For security vulnerabilities, please email security@flowcms.io instead of opening a public issue.

Code of Conduct

FlowCMS adheres to the Contributor Covenant v2.1. We expect all contributors to:

  • Use welcoming and inclusive language
  • Be respectful of differing viewpoints and experiences
  • Gracefully accept constructive criticism
  • Focus on what is best for the community

Reports of unacceptable behavior can be submitted to conduct@flowcms.io and will be reviewed within 48 hours.

Community & Support

Join thousands of developers and content teams building with FlowCMS:

💬 Discord

Real-time chat, Q&A, and community events. Join server →

📡 GitHub Discussions

Showcase projects, ask questions, and share feedback. Open discussions →

🐦 Twitter/X

Follow for updates, tips, and release announcements. @FlowCMS_io →

📧 Newsletter

Monthly digest of new features, community highlights, and roadmaps. Subscribe →

Thank you for helping make FlowCMS better. Every line of code, bug report, and suggestion matters. 🙌