Challengers is a multiplayer quiz game designed to maximize knowledge while you have fun with your friends!
A complete solution for fun without procrastination, available for Android, iOS and web.
| Login | Homepage | Settings |
|---|---|---|
![]() |
![]() |
![]() |
| Leaderboard | Create Game Room | Join Game Room |
|---|---|---|
![]() |
![]() |
![]() |
- β Realtime Multiplayer Game
- β Customizable user data
- β User-specific and global leaderboard
- β Customizable game rooms (number of players, questions, category, difficulty and type)
- β Join a room with your friends
- β Authentication via token (UUID)
- β Export your data in JSON format
- Expo SDK - Main platform
- React Native - Cross-platform UI framework
- expo-router - File-based routing system
- Redux Toolkit - Global application state management
- Supabase - Real-time synchronization and data persistence
- restDB - Data persistence
- i18next - Internationalization of application screens
- TypeScript - Main programming language
- MMKV - High performance local persistence
- expo-secure-store - Secure storage of sensitive data
- React Native Reanimated - Animations for React Native elements
- GitHub Actions - CI/CD pipeline
- react-native-view-shot - Component image capture
- Open Trivia DB - Database provider of questions and answers
- LibreTranslate - Translation of questions and answers from Open Trivia DB
- Go to "Releases" on the official GitHub page
- Download the latest version (.apk)
- Install Challengers from the download
- Go to "Releases" on the official GitHub page
- Download the latest version (.ipa)
- Install AltStore
- Install Challengers from AltStore
- Clone the repository:
git clone https://github.com/8126Lucas/DSSMV_ProjectReact_1241131_1241008.git- Start a project on restDB
- Start a project on Supabase
- Create the tables in Supabase (disable RLS and enable Realtime on all tables):
-- rooms
create table public.rooms (
id bigint generated by default as identity not null,
created_at timestamp with time zone not null default now(),
questions json null,
room text not null,
constraint rooms_pkey primary key (id)
) TABLESPACE pg_default;
-- in_game_answer_state
create table public.rooms (
id bigint generated by default as identity not null,
created_at timestamp with time zone not null default now(),
questions json null,
room text not null,
constraint rooms_pkey primary key (id)
) TABLESPACE pg_default;
-- question_translation_bank
create table public.rooms (
id bigint generated by default as identity not null,
created_at timestamp with time zone not null default now(),
questions json null,
room text not null,
constraint rooms_pkey primary key (id)
) TABLESPACE pg_default;- Create a CORS API key on restDB
- Create the
.envfile in the project root directory
EXPO_PUBLIC_SUPABASE_URL=...
EXPO_PUBLIC_SUPABASE_API=...
EXPO_PUBLIC_RESTDB_API_MOBILE=...
EXPO_PUBLIC_RESTDB_API_WEB=...- Create the
env.d.tsfile in the same directory
declare namespace NodeJS {
interface ProcessEnv {
EXPO_PUBLIC_SUPABASE_URL: string;
EXPO_PUBLIC_SUPABASE_API: string;
EXPO_PUBLIC_RESTDB_API_MOBILE: string;
EXPO_PUBLIC_RESTDB_API_WEB: string;
}
}- Now everything is ready!
DSSMV_ProjectReact_1241131_1241008/
βββ .github/workflows/
βββ app/
β βββ (tabs)/
β β βββ home/
β β βββ leaderboard/
β β βββ settings/
β β βββ _layout.tsx
β βββ game/
β βββ login/
β βββ waiting_room/
β βββ _layout.tsx
β βββ index.tsx
βββ components/
β βββ game/
β βββ homepage/
β βββ leaderboard/
β βββ settings/
β βββ special_rooms/
β βββ ...
βββ assets/
β βββ images/
β βββ screenshots/
βββ constants/
βββ hooks/
βββ src/
β βββ flux/
β βββ foreign/
β βββ i18n/
β β βββ translations/
β β β βββ en.json
β β β βββ es.json
β β β βββ pt.json
β β βββ index.tsx
β βββ types
βββ .env
βββ app.json
βββ env.d.ts
βββ package.json- The context of the trivia translations isn't the best
Any problem you encounter while using Challengers, open an issue on the official GitHub page and we will try to solve it by the next version.
- Lucas Santos - Full application development
- Miguel Silva - Full application development
- Fork the project
- Create a branch for your feature (
git checkout -b feature/new-feature) - Commit your changes (
git commit -am 'Add new feature') - Push to the branch (
git push origin feature/new-feature) - Open a Pull Request





