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, or canonical public/{person-slug}/{public-id}.
New accounts use the first-use Master CV guide
at /onboarding. Apply migration 20260907000000_resume_onboarding.sql before deploying
this flow; existing accounts are not automatically enrolled.
Administrators can repeat it on a separate test draft from account settings
(/settings). This additionally requires 20260907010000_admin_onboarding_tests.sql.
Apply via supabase db push, which applies files from supabase/migrations/ in version (filename) order. Every migration has a unique 14-digit version, so filename order is the execution order.
supabase/migrations/20260405000000_phase_c_foundation.sqlsupabase/migrations/20260405010000_z_phase_c_completion.sqlsupabase/migrations/20260406000000_fix_profiles_policy_recursion.sqlsupabase/migrations/20260409000000_phase_d_yaml_template_iteration.sqlsupabase/migrations/20260410000000_phase_b_yaml_data_layer.sqlsupabase/migrations/20260410010000_phase_c_auth_rbac_admin.sqlsupabase/migrations/20260505000000_resume_presets.sqlsupabase/migrations/20260505010000_summary_list_defaults.sqlsupabase/migrations/20260506000000_resume_language_metadata.sqlsupabase/migrations/20260508000000_cv_publication_foundation.sqlsupabase/migrations/20260509000000_cv_publication_rpc_atomic.sqlsupabase/migrations/20260509010000_privacy_first_admin_access.sqlsupabase/migrations/20260510000000_fix_publish_rpc_variant_fallback.sqlsupabase/migrations/20260510010000_schema_cleanup_role_field.sqlsupabase/migrations/20260517000000_profile_bio_field.sqlsupabase/migrations/20260531000000_fix_publish_rpc_person_slug_public_id.sqlsupabase/migrations/20260531010000_fix_published_cv_locale_trigger.sqlsupabase/migrations/20260531020000_remove_locale_auto_seed.sqlsupabase/migrations/20260603000000_resume_user_locales.sqlsupabase/migrations/20260603010000_z_profile_name_sync.sqlsupabase/migrations/20260603020000_zz_update_own_profile_rpc.sqlsupabase/migrations/20260604000000_reactivate_revoked_public_link_on_publish.sqlsupabase/migrations/20260605000000_fix_guard_profile_update_service_role.sqlsupabase/migrations/20260605010000_reassert_profiles_policies_no_recursion.sqlsupabase/migrations/20260610000000_pdf_feature_flags.sqlsupabase/migrations/20260614000000_prevent_last_admin_deletion.sqlsupabase/migrations/20260703000000_user_data_transfer_flag.sqlsupabase/migrations/20260711000000_profile_test_and_staff_flags.sqlsupabase/migrations/20260712000000_login_restriction_flag.sqlsupabase/migrations/20260713000000_content_safety_flags.sqlsupabase/migrations/20260714000000_profile_privileged_update_boundary.sql
npm run lintnpm run typechecknpm testnpm run verify- runs lint, typecheck, and test togethernpm run ci- runsverifyplusnpm run buildnpm run test:rls- runs the live four-role PostgREST/RPC matrix against an isolated Supabase project (seedocs/guides/test-scenarios/TEST_SCENARIOS.md)npm run qa:env -- --target=preview|production- gates hosted deploys on the runtime config contract before smoke testing (seedocs/guides/development/environment-matrix.md)
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