Relaticle
팀과 AI 작업을 위한 오픈소스 CRM으로, 앱 사용·내장 채팅·39개 MCP 도구 연동이 가능하며 자체 호스팅으로 데이터 소유권을 보장합니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A Ghana travel app. It tells any traveller what a trip will cost, how to get there and how long it will take, with weather and hazard alerts. See the PRD and the Phase 0 build documentation for the product and the plan. This repository holds the walking skeleton (Phase 0 doc 8.8): the full pipeline working end to end before Phase 1 features are built on top.
| Platform | How users get it |
|---|---|
| Android | Play Store app built from apps/passenger (React Native + Expo) |
| iPhone | Web app (PWA) built from the same code and installed from Safari with "Add to Home Screen" |
| Staff | Admin dashboard in apps/admin (Next.js) |
The backend is Supabase: Postgres + PostGIS, phone-number auth, row level security, Edge Functions and scheduled jobs.
apps/passenger Android app + iPhone web app (Expo, TypeScript, Expo Router)
apps/admin Staff dashboard (Next.js static export)
packages/shared Business rules, types and English/Twi strings used by both apps
supabase/ Database migrations, seed data, edge functions, local config
migrations/ Additive-only SQL migrations (core, phase 1, retention)
functions/ send-sms (Hubtel -> Arkesel failover), delete-account
tests/ Access-rule tests run against plain Postgres in CI
docs/ Architecture notes, decision records (docs/adr), Phase 1 user stories
scripts/test-db.sh Applies migrations to a fresh database and runs the access-rule tests
Design: Ghana colours (green for actions, red for emergencies and warnings, gold for highlights, the flag stripe with the black star as our mark), large text and strong contrast for sunlight. Bottom tabs: Home, My trips, Safety, Settings. Results show the ways to travel as cards to swipe and tap when there is a choice.
phase1.fare_reports feature switch.EXPO_PUBLIC_GOOGLE_MAPS_EMBED_KEY). "Start live map" opens a full-screen map with the road route, a moving "you are here" dot and the time and distance left (Maps JavaScript API on the same key; the road route comes from the web app's /api/route function with a private GOOGLE_ROUTES_KEY). "Traffic home" on the home screen shows where you are and the minutes to get home in today's traffic (and how much longer than usual), on a map with Google's live traffic; home is kept on the phone (/api/traffic, Routes API with live traffic).To connect a hosted Supabase project instead of the local stack, follow docs/supabase-setup.md.
Requirements: Node 22, Docker (for the local Supabase stack), and the Expo Go app or an Android emulator.
npm install
# 1. Backend: starts Postgres, Auth, the API and edge functions on http://127.0.0.1:54321
cp supabase/functions/.env.example supabase/functions/.env
npx supabase start # prints the local anon key
npx supabase db reset # applies migrations + seed.sql
npx supabase functions serve --env-file supabase/functions/.env
# 2. Passenger app
cp apps/passenger/.env.example apps/passenger/.env.local # paste the anon key
npm run passenger # press "a" for Android, "w" for web
# 3. Admin dashboard
cp apps/admin/.env.example apps/admin/.env.local # paste the anon key
npm run admin # http://localhost:3000
The local test phone number 024 000 0001 signs in with code 123456 without sending an SMS (see supabase/config.toml). To create a staff user, add one in Supabase Studio (http://127.0.0.1:54323) and insert a row into user_roles.
npm run typecheck # all workspaces
npm test # business rules and translations
DATABASE_URL=postgres://... scripts/test-db.sh # migrations + access rules on Postgres/PostGIS
cd supabase/functions && deno test --allow-env _shared
DATABASE_URL=postgres://... scripts/test-e2e.sh # browser tests against a real database + API (see e2e/)
The browser tests build the passenger web app and the admin, load the migrations and seed into a fresh database, put PostgREST (the API server Supabase uses) in front of it, and drive the apps in Chromium as a signed-in passenger or a staff member with two-factor. Each step also checks what was saved in the database. E2E_ONLY=admin runs one suite; failure screenshots go to e2e/results/.
CI (.github/workflows/ci.yml) runs all of these plus the Android and web builds on every pull request.
npx eas-cli@latest build -p android --profile production from apps/passenger, then submit to the Play Store internal track (eas.json). This needs a company Expo account and Play Console.npm run export:web -w apps/passenger produces a static site in apps/passenger/dist. Host it on any static host over HTTPS.npx supabase link to the environment's project, then npx supabase db push. Functions: npx supabase functions deploy. Secrets: npx supabase secrets set --env-file ....The domain ghanatransport.com.gh (the app ID gh.com.ghanatransport.app is based on it and cannot change after the first Play Store upload), Supabase projects per environment, Hubtel/Arkesel accounts and sender ID, Play Console and Expo accounts, Data Protection Commission registration, lawyer-reviewed terms and privacy notice, the verified seed dataset, and native Twi review. See docs/architecture.md for the decisions made so far.
/api/weatherapps/passenger/public/sw.js).docs/partner-fare-api.md, ADR 0016)./terms and /privacy-policy (drafts for legal review, in packages/shared/src/legal-text.ts; docs/legal/ has copies for the lawyer, rebuilt with npx vite-node scripts/build-legal-docs.ts). Bump LEGAL_VERSIONS in packages/shared/src/legal.ts when the text changes.