The web app frontend for the GrottoCenter project
This project uses Yarn & Yarn workspaces
For the backend server see GrottoCenter/grottocenter-api
- Install NodeJs (v20 minimum) and Yarn
- Run
yarnto install dependencies - Run
yarn startto launch the app
By default the app use the production api as backend. To modify it change the
REACT_APP_API_URLvariable in thepackages\web-app\.envfile
-
Configurations:
- eslint-config
eslint-config-typescriptprettier-configts-config
startStart Grottocenter frontbuildBuild the Grottocenter frontlintCheck linting ruleslint:fixSame aslintbut will also try to fix errorse2e:runRun the end to end test suite (require a running app)e2e:openOpen the end to end test suite browser (require a running app)testRun unit tests (single run, no watch mode). Filter by pattern:yarn test -- --testPathPattern=<pattern>storybookStart storybooktranslations:sync-with-enCompares a translation file with en.json to check synchronization (use:yarn translations:sync-with-en <target-file>)translations:update-enScans JSX files for translation keys and adds missing ones topackages/web-app/public/lang/en.json(automatically sorts the file afterwards)translations:sortSorts translation file keys alphabetically (case-insensitive):node scripts/translations/sort.js <path-to-json-file>
Github Actions is running 2 tasks on push and pull requests on develop :
- Lint
- Azure Static Web Apps deploy
This project is set up for use with Claude Code and compatible AI agents.
AGENTS.md— project conventions, architecture, vocabulary, git workflow, and agent checklist. Read by agents for any work in this repo.packages/web-app/AGENTS.md— web-app specifics: i18n workflow, Redux patterns, testing, env vars, UI/UX patterns. Read when working insidepackages/web-app/.CONTRIBUTING.md— human-oriented setup guide (IDE, browser extensions, Transifex).
These files can and should be updated when conventions change, new patterns are established, or the tech stack evolves.
Reusable agent workflows are defined in .agents/skills/:
| Skill | Invocation | Description |
|---|---|---|
code-review |
/code-review <PR-number> |
Fetches the diff, reads project conventions, and submits a structured review to GitHub |
github-workflow |
/github-workflow |
Guides through the GrottoCenter commit/branch/PR conventions |
Claude Code loads skills from .claude/skills/. A project hook automatically mirrors any file saved under .agents/skills/ into .claude/skills/ so both stay in sync.
To sync manually (e.g. after cloning or pulling new skills):
# bash/zsh
cp -r .agents/skills/. .claude/skills/
# PowerShell
Copy-Item -Recurse -Force .agents\skills\* .claude\skills\- Create or edit the
SKILL.mdin.agents/skills/<skill-name>/. - The hook copies it to
.claude/skills/automatically on the next agent write. If working outside Claude Code, run the manual sync above. - Invoke with
/<skill-name>in Claude Code.
To prevent a bad commit, we use the Git hooks husky
Commitlint rules define in commitlint config