-
Notifications
You must be signed in to change notification settings - Fork 1
Onboarding
Welcome to VilnaCRM!
We’re excited to have you join us as a new front-end contributor. This document will help you set up your development environment, understand our project architecture and tech stack, and familiarize yourself with our coding standards and processes.
VilnaCRM is an open-source CRM system developed by a Ukrainian team to automate sales for small and medium-sized businesses. The landing page's primary audience includes business owners and sales managers, while the CRM system targets sales departments, accountants, IT specialists, and management teams.
This onboarding document aims to help new interns, trainees, and contributors quickly learn and contribute effectively to our frontend codebase.
- Development Environment & Setup
- Project Architecture & Tech Stack
- Coding Standards & Best Practices
- Testing & QA
- Continuous Integration & Deployment
- Useful Resources & References
- Mentoring & Support
- Next Steps
- Ubuntu or macOS (Unix-based, CI-tested)
- Node.js 20 required
- No Windows/WSL or proprietary tools (not supported)
- We recommend using WebStorm with AI Assistant or Cursor AI. If you are a student, you can obtain a student license for free.
Also, please install the Coderabbit AI Plugin into your IDE.
- Navigate to the VilnaCRM Website repository.
- Follow the “Minimal Installation” instructions in the repository’s README.
- Once the repository is cloned locally, install dependencies:
make install
- We use Git with a standard branching strategy (e.g., feature branches, main/master as the production branch).
- Please adhere to our commit message conventions specified in our CONTRIBUTING.md file.
- Next.js compiler is our primary bundler. Familiarity with basic configuration is helpful.
- We mainly use React with Next.js for server-side generation.
Our frontend code is loosely based on the principles outlined in bulletproof-react.
In general, we use MUI. Check the specific repository’s documentation.
- React + Next.js are our primary tools.
- We have CI checks to ensure high code quality (security checks, style fixing, static linters, DeepScan, Snyk, and more).
- Configured testing tools include Playwright and Jest.
- The template is based on bulletproof-react.
We have a shared UI toolkit and other internal libraries. See:
- We use Next lint, Prettier, Typescript linter and other linters. Always check CI rules and run:
for instructions on how to fix code style automatically.
make format make lint-eslint make lint-tsc make lint-md
- Refer to patterns in bulletproof-react. Reuse components whenever possible.
- Currently, we do not use Redux or a centralized state management library. For React, we rely on built-in features like the Context API or local component states as needed.
- Always be mindful of lazy loading, code splitting, and other performance optimizations.
- Handle sensitive data on the server-side where possible; limit client exposure.
- CI checks in GitHub will flag potential security issues.
Here is a small React component snippet (example of best practices):
import React from 'react';
interface ButtonProps {
onClick: () => void;
label: string;
}
export const Button: React.FC<ButtonProps> = ({ onClick, label }) => {
return (
<button type="button" onClick={onClick}>
{label}
</button>
);
};- Jest for unit tests.
- Playwright for end-to-end (E2E) tests and visual tests.
- React Testing Library for component testing (where applicable).
- Keep tests short, focused, and descriptive.
- Use descriptive test names (e.g.,
it('should render the button correctly')). - Mock dependencies where necessary to keep tests deterministic.
- Run your tests locally before pushing any changes:
make test-e2e make test-mutation make test-visual make test-unit-all
- Check the terminal output or CI logs for errors or coverage summaries.
We use GitHub Actions with a variety of checks (15 CI checks, specifically), including:
- e2e testing / test
- Format yaml files / yamlfmt
- Mutation Testing / mutation-testing
- Visual Tests / visual-test
- codecov / codecov
- generate changelog and create pre release / build
- load testing / load-testing
- memory leak testing / memory-leak-testing
- performance testing / performance
- security testing / Analyze (typescript)
- static testing / static
- unit testing / unit
- Sandbox Creation and Rebuild / TriggerRotation
- Sandbox Creation and Rebuild / SandboxPipelineExecution
- Code scanning results / CodeQL
Additionally, we use:
- CodeRabbit for code reviews and AI suggestions.
- Snyk for security scanning.
- Sandbox: Create a new branch, open a Pull Request (PR). Once the PR is created, GitHub Actions automatically builds a sandbox and comments with a deployment link.
- Production: Merge your PR into the main branch. That triggers the production deployment pipeline.
- All PRs require approval from @kravalg and coderabbit ai before merging.
- Frontend SSR Template: GitHub - frontend-ssr-template
- Frontend SPA Template: GitHub - frontend-spa-template
- Figma (UI/UX designs): VilnaCRM Figma Project
- Architecture & Best Practices: bulletproof-react
- C4 diagram: miro board
- Website: GitHub - website and its Wiki
- CRM: GitHub - crm
- UI Kit: GitHub - ui-toolkit
- BFF Template: GitHub - ts-bff-template
- Pull Requests: How to work with Pull Requests
- React Official Documentation: react.dev
- MUI Official Documentation: mui.com
- Next.js Official Documentation: nextjs.org/docs
If you need help, reach out:
- Slack is our main communication channel. Join the frontend chat for quick questions and collaboration.
- You can also schedule 1:1 sessions with your assigned mentor or the Frontend Lead.
- Key contact: @kravalg (Solutions Architect).
Please read day to day workflow
Congratulations on taking the first step in your VilnaCRM journey
We appreciate your time and effort to learn our processes, and we are here to support you.
Start exploring the repositories, experiment with small fixes or features, and don’t hesitate to ask questions in Slack.
Thank you for joining the VilnaCRM team, and we look forward to building great software together!