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
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
| Prefix | Purpose | Example |
|---|---|---|
feat/ | New features | feat/add-webhooks |
fix/ | Bug fixes | fix/login-timeout |
docs/ | Documentation updates | docs/api-auth |
refactor/ | Code improvements | refactor/db-migration |
chore/ | Maintenance | chore/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
- Fork the repository and create a feature branch
- Make your changes following our guidelines
- Run
npm run lintandnpm test - Push to your fork and open a PR against
main - Request review from the
@flowcms/coreteam
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.
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:buildto 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. 🙌