This repository contains the React/Next.js OpenCiVera codebase. The former static HTML/CSS/JS frontend has been retired; public/ now holds data files, images, vendor runtime assets, and migration helpers only.
app/- Next.js App Router implementation.public/data/public/- YAML locale/content files for the public sample CV.public/data/private/- private/template YAML files consumed by the editor and server data layer.public/scripts/phase-b/- historical YAML data migration helpers.public/vendor/- browser-only vendor assets still loaded by client React screens.supabase/migrations/- SQL migrations.docs/- guides, plans, QA checklists.
- Install deps:
npm install - Create
.env.localfrom.env.development.example - Fill:
NEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEYSUPABASE_SERVICE_ROLE_KEY
- Start:
npm run dev - Open the React routes, for example
/,/resume,/login,/dashboard,/user,/admin,/master-resume,/privacy, canonical public/{person-slug}/{public-id}, or compatibility/r/{slug}.
Apply via supabase db push, which applies files from supabase/migrations/ in filename order. The two 20260405_phase_c_* migrations are the one exception: foundation must run before completion despite sorting after it alphabetically.
supabase/migrations/20260405_phase_c_foundation.sqlsupabase/migrations/20260405_phase_c_completion.sqlsupabase/migrations/20260406_fix_profiles_policy_recursion.sqlsupabase/migrations/20260409_phase_d_yaml_template_iteration.sqlsupabase/migrations/20260410_phase_b_yaml_data_layer.sqlsupabase/migrations/20260410_phase_c_auth_rbac_admin.sqlsupabase/migrations/20260505_resume_presets.sqlsupabase/migrations/20260505_summary_list_defaults.sqlsupabase/migrations/20260506_resume_language_metadata.sqlsupabase/migrations/20260508_cv_publication_foundation.sqlsupabase/migrations/20260509_cv_publication_rpc_atomic.sqlsupabase/migrations/20260509_privacy_first_admin_access.sqlsupabase/migrations/20260510_fix_publish_rpc_variant_fallback.sqlsupabase/migrations/20260510_schema_cleanup_role_field.sqlsupabase/migrations/20260517_profile_bio_field.sqlsupabase/migrations/20260531_fix_publish_rpc_person_slug_public_id.sqlsupabase/migrations/20260531_fix_published_cv_locale_trigger.sqlsupabase/migrations/20260531_remove_locale_auto_seed.sqlsupabase/migrations/20260603_resume_user_locales.sqlsupabase/migrations/20260603_z_profile_name_sync.sqlsupabase/migrations/20260603_zz_update_own_profile_rpc.sqlsupabase/migrations/20260604_reactivate_revoked_public_link_on_publish.sqlsupabase/migrations/20260605_fix_guard_profile_update_service_role.sqlsupabase/migrations/20260605_reassert_profiles_policies_no_recursion.sqlsupabase/migrations/20260610_pdf_feature_flags.sql
npm run lintnpm run typechecknpm testnpm run verify- runs lint, typecheck, and test togethernpm run ci- runsverifyplusnpm run build
If npm test fails in restricted environments (spawn EPERM), run suites directly, e.g.:
node tests/phase-b-yaml-data-layer.test.jsnode tests/phase-c-sql-migration.test.jsnode tests/phase-d-editor-implementation.test.js
- Documentation index - start here for the canonical guide map
- Phase status overview
- Action plan / execution checklist
- Architecture Decision Records
- Project roadmap