myspoti
Jetpack Compose로 만든 Spotify 전용 안드로이드 클라이언트
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗By Gamers Loft Entertainment. Code folders and packages keep the cinewave name; everything viewers see says GLE Movies.
Movie streaming platform built for Uganda (open to viewers worldwide) — website + Android app on one shared backend. Prices in UGX; payments planned via MTN MoMo, Airtel Money and cards.
cinewave/
├─ apps/
│ ├─ web/ Next.js 16 website (catalogue, title pages, accounts, plans)
│ └─ mobile/ Expo (React Native) Android app
├─ packages/
│ └─ shared/ Types, data access and business rules used by BOTH apps
└─ supabase/
├─ migrations/ Database schema, access rules (RLS), storage bucket
├─ seed.sql Sample plans, genres, 9 placeholder titles + 2 partner films
└─ tests/ Access-rule checks
| Website | Android app | |
|---|---|---|
| Look | Cinematic, poster-led (CineStream reference) | Rounded cards, bottom tabs (mobile reference) |
| Accent | Red #e5192e — --accent in apps/web/app/globals.css | Orange #ff7a2f — colors.accent in apps/mobile/lib/theme.ts |
| Fonts | Bebas Neue (titles) + Inter, self-hosted | Plus Jakarta Sans |
| Home | Rotating hero with Play / More Info, rows with page dots | Greeting, swipeable hero cards, Continue Watching, rows |
| Title | Full-bleed art, chips, cast, details | Full-bleed art, chips, synopsis, cast, Watch Now bar |
| Player | Overlay player: title, rating, synopsis, seek bar, volume, settings, full screen, keyboard shortcuts | Phase 3 |
Posters without a wide backdrop are shown as blurred fill + sharp key art on the right (desktop) or full-bleed (phone). Upload a 16:9 backdrop for the best hero.
| Area | Web | Android |
|---|---|---|
| Home: featured hero + Trending, Recently Added, Free to Watch, curated rows | ✅ | ✅ |
| Continue Watching row (from saved progress) | ✅ | ✅ |
| Title page: details, genres, languages, related titles | ✅ | ✅ |
| Browse/search with genre, access and sort filters | ✅ | ✅ (search + genre) |
| Sign up, sign in, sign out, email confirmation, password reset | ✅ | ✅ (no reset yet) |
| My List (watchlist), synced across devices | ✅ | ✅ |
| Account: plan status, profile, country | ✅ | ✅ (plan status) |
| Plans page (UGX, weekly and monthly, from database) | ✅ | ✅ |
| Play / Download buttons decided by server-side entitlement | ✅ | ✅ |
| Video playback | Phase 3 | Phase 3 |
| Checkout / Google Play billing | Phase 4 | Phase 4 |
| Offline downloads | — | Phase 5 |
Admin dashboard (/admin) | ✅ | — |
The database decides what each person can see and play — the apps only display the result.
playback_entitlement(title, country) returns can_play, can_download and a reason:
ok, sign_in_required, upgrade_required, not_available_in_region, not_found.The seed data includes deliberate test cases: a draft title and an expired licence (both hidden), and a title licensed only in AE, UG, KE.
Create a new project at https://supabase.com (separate from the trainer app).
Open SQL Editor and run these files in order, one at a time:
supabase/migrations/20261027000000_init.sqlsupabase/migrations/20261027000100_storage.sqlsupabase/migrations/20261027000200_ratings.sqlsupabase/migrations/20261028000000_admin_uganda.sqlsupabase/migrations/20261028000100_security_hardening.sqlsupabase/seed.sqlThe live CineWave project (
bugmkghovzdgncspjvwy, Frankfurt) already has all of these applied.
Authentication → URL Configuration
http://localhost:3000http://localhost:3000/auth/confirmProject Settings → API: copy the Project URL and anon public key.
Prefer the command line? With the Supabase CLI:
supabase linkthensupabase db push, then runseed.sql.
npm install # from the cinewave folder, installs everything
copy apps\web\.env.example apps\web\.env.local # then paste your URL and anon key
npm run web # http://localhost:3000
copy apps\mobile\.env.example apps\mobile\.env # same URL and anon key
# EXPO_PUBLIC_SITE_URL lets the app load sample posters from the website:
# emulator → http://10.0.2.2:3000 phone → http://YOUR-PC-IP:3000
npm run android # opens in the emulator
# or: npm run mobile, then scan the QR code with Expo Go on your phone
Sign up on the website, then run this once in the SQL Editor:
insert into public.user_roles (user_id, role)
select id, 'admin' from auth.users where email = '[email protected]';
Refresh the site — an Admin button appears in the header (on phones: Account → Open admin dashboard).
For staff who should manage films but not rights, partners or users, use role 'editor' instead.
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗