Conventions
Git
Commit Messages
testingrepo enforces Jira-style commits via commitlint- Elsewhere: conventional commit style is preferred (
feat:,fix:,chore:,docs:)
Submodule Workflow
Work happens inside submodule directories. After committing there:
bash
# In the pod-portals root, bump the submodule pointer
git add django-api # or portals / testing / docs
git commit -m "chore: bump django-api to latest"
git pushBackend (Python)
- Formatter: Black (line length 119)
- Linter: Flake8
- Pre-commit: hooks enforce both automatically
Frontend (JavaScript)
- Formatter: Prettier
- Linter: ESLint (Airbnb config)
- Pre-commit: Husky + lint-staged
Testing
- Selectors: always use
data-cyattributes, never CSS classes or text - Feature files: one feature per user-facing capability
- Page objects: one class per screen/page
Test Account Email Domain
All test and seed user accounts use @novavirtual.site as the email domain. This applies to every persona across all environments — local, staging, and CI.
| Persona | |
|---|---|
| Master (superadmin) | superadmin@novavirtual.site |
| Admin | admin@novavirtual.site |
| Employee | employee@novavirtual.site |
| Marketer | marketer@novavirtual.site |
When adding new test personas, follow the same pattern: <role>@novavirtual.site. Do not use @example.com, @medicalwebexperts.com, or any other domain for test accounts.
Docs
- All significant architectural decisions, integrations, and gotchas should be documented here as they are discovered
- Keep pages concise — prefer tables and code blocks over prose paragraphs
- Update docs in the same commit/PR as the corresponding code change