Skip to content

Latest commit

Β 

History

98 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Challengers πŸ†

GitHub License Android GitHub Actions Workflow Status (android-build) GitHub Actions Workflow Status (ios-build) GitHub Actions Workflow Status (web-deploy) Supabase GitHub issues GitHub stars GitHub Downloads (all assets, all releases)

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.

πŸ“Έ Screenshots

Login Homepage Settings
login homescreen settings
Leaderboard Create Game Room Join Game Room
lb create join

πŸš€ Features

  • βœ… 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

πŸ”§ Technologies Used

  • 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

βš™οΈ Install the Application

Android πŸ’š

  1. Go to "Releases" on the official GitHub page
  2. Download the latest version (.apk)
  3. Install Challengers from the download

iOS 🍎

  1. Go to "Releases" on the official GitHub page
  2. Download the latest version (.ipa)
  3. Install AltStore
  4. Install Challengers from AltStore

πŸ’Ύ Self-Host Challengers

  1. Clone the repository:
git clone https://github.com/8126Lucas/DSSMV_ProjectReact_1241131_1241008.git
  1. Start a project on restDB
  2. Start a project on Supabase
  3. 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;
  1. Create a CORS API key on restDB
  2. Create the .env file in the project root directory
EXPO_PUBLIC_SUPABASE_URL=...
EXPO_PUBLIC_SUPABASE_API=...
EXPO_PUBLIC_RESTDB_API_MOBILE=...
EXPO_PUBLIC_RESTDB_API_WEB=...
  1. Create the env.d.ts file 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;
    }
}
  1. Now everything is ready!

πŸ“ Project Structure

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

⚠️ Known Issues

  • The context of the trivia translations isn't the best

πŸ› οΈ Troubleshooting

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.

πŸ‘₯ Authors

🀝 How to Contribute

  1. Fork the project
  2. Create a branch for your feature (git checkout -b feature/new-feature)
  3. Commit your changes (git commit -am 'Add new feature')
  4. Push to the branch (git push origin feature/new-feature)
  5. Open a Pull Request