A mobile app for conferences and meetups by Pupunha Code. Built with React Native and Expo.
Highly based by the Codecon and React Conf apps.
https://github.com/expo/react-conf-app
π§π· Leia em PortuguΓͺs: README.pt-BR.md
- Features
- Technologies
- Prerequisites
- Quick Start
- Environment Setup
- Database Setup
- Running the App
- Project Structure
- Available Scripts
- Troubleshooting
- π Event Calendar - Browse sessions organized by day
- π₯ Speakers - Profiles with GitHub avatars, biographies, and social links
- π Session Details - Complete information about talks and workshops
- π Bookmarks - Save favorite sessions for quick access
- π± Social Feed - Share posts and images with the community
- π Dark Mode - Automatic light/dark theme support
- π± Cross-Platform - iOS, Android, and Web
- Expo ~54.0
- React Native 0.81.5
- React 19.1.0
- TypeScript
- Zustand (state management)
- Expo Router (file-based routing)
- Supabase (backend & authentication)
- React Query (data fetching)
Before you begin, make sure you have the following installed:
- Bun (v1.0 or higher) - Package manager and runtime
- Install:
curl -fsSL https://bun.sh/install | bash - Or use npm:
npm install -g bun
- Install:
- Node.js (v18 or higher) - Required for Expo
- Git - Version control
iOS (macOS only):
- Xcode (latest version)
- iOS Simulator (comes with Xcode)
- CocoaPods - Install:
sudo gem install cocoapods
Android:
- Android Studio
- Android SDK (installed via Android Studio)
- Android Emulator (set up via Android Studio)
Web:
- Any modern web browser (Chrome, Firefox, Safari, Edge)
git clone https://github.com/pupunha-code/pupunha-conf
cd pupunha-confbun installNote: If you don't have Bun installed, you can use npm instead:
npm install
Copy the example environment file:
cp .env.example .envThen edit .env and fill in your configuration values (see Environment Setup below).
Run the SQL schema in your Supabase project (see Database Setup below).
bun run startThis will start the Expo development server. You can then:
- Press
ito open iOS simulator - Press
ato open Android emulator - Press
wto open in web browser - Scan the QR code with Expo Go app on your phone
The app requires several environment variables to function properly. Create a .env file in the root directory based on .env.example.
-
Create a Supabase project:
- Go to supabase.com
- Sign up or log in
- Create a new project
- Wait for the project to finish setting up
-
Get your Supabase credentials:
- Go to Project Settings β API
- Copy your Project URL (this is your
EXPO_PUBLIC_SUPABASE_URL) - Copy your anon/public key (this is your
EXPO_PUBLIC_SUPABASE_ANON_KEY)
-
Add to
.env:EXPO_PUBLIC_SUPABASE_URL=https://your-project.supabase.co EXPO_PUBLIC_SUPABASE_ANON_KEY=your-anon-key-here
-
Create a Google Cloud project:
- Go to Google Cloud Console
- Create a new project or select an existing one
- Enable the Google+ API
-
Create OAuth 2.0 credentials:
- Go to APIs & Services β Credentials
- Click "Create Credentials" β "OAuth client ID"
- Create credentials for:
- Web application β Copy the Client ID
- iOS β Copy the Client ID (requires bundle ID:
com.pupunhaconf.app) - Android β Copy the Client ID (requires package name:
com.pupunhaconf.app)
-
Add to
.env:EXPO_PUBLIC_GOOGLE_WEB_CLIENT_ID=your-web-client-id.apps.googleusercontent.com EXPO_PUBLIC_GOOGLE_IOS_CLIENT_ID=your-ios-client-id.apps.googleusercontent.com EXPO_PUBLIC_GOOGLE_ANDROID_CLIENT_ID=your-android-client-id.apps.googleusercontent.com
If you want to use LogRocket for error tracking and analytics:
- Sign up at logrocket.com
- Create a new project
- Copy your App ID
- Add to
.env:EXPO_PUBLIC_LOGROCKET_APP_ID=your-logrocket-app-id
EXPO_PUBLIC_APP_VERSION=1.0.0The app uses Supabase for data storage and authentication. You need to set up the database schema.
- Open your Supabase project
- Go to SQL Editor (in the left sidebar)
- Copy and paste the contents of
supabase-schema.sql - Click "Run" to execute the SQL
This will create:
profilestable - User profilesfeed_poststable - Social feed posts- Storage bucket for images
- Row Level Security (RLS) policies
- Triggers for automatic profile creation
After running the SQL, verify:
- Tables are created: Go to Table Editor β Check
profilesandfeed_posts - Storage bucket exists: Go to Storage β Check
feed-imagesbucket - RLS is enabled: Check table settings
Start the Expo development server:
bun run startThis opens the Expo DevTools. You can then:
-
iOS Simulator (macOS only):
bun run ios
Or press
iin the Expo DevTools -
Android Emulator:
bun run android
Or press
ain the Expo DevTools -
Web Browser:
bun run web
Or press
win the Expo DevTools -
Physical Device:
- Install Expo Go on your phone
- Scan the QR code shown in the terminal/Expo DevTools
- Make sure your phone and computer are on the same Wi-Fi network
For production builds, use EAS Build:
# Install EAS CLI
npm install -g eas-cli
# Login to Expo
eas login
# Build for iOS
eas build --platform ios
# Build for Android
eas build --platform androidsrc/
βββ app/ # Routes (Expo Router file-based routing)
β βββ (dashboard)/ # Main app screens
β β βββ (event)/ # Event-specific screens
β β βββ calendar/ # Calendar/schedule view
β β βββ bookmarked.tsx
β β βββ feed.tsx
β β βββ info.tsx
β β βββ speakers.tsx
β βββ (modal)/ # Modal screens
β β βββ session/[id].tsx
β β βββ speaker/[id].tsx
β βββ auth.tsx # Authentication callback
β βββ index.tsx # Event selector
βββ components/ # Reusable UI components
β βββ feed/ # Feed-related components
β βββ layout/ # Layout components
β βββ ui/ # UI primitives
βββ features/ # Feature-specific modules
β βββ sessions/ # Session-related code
βββ hooks/ # Custom React hooks
βββ lib/ # Utilities and theme
β βββ supabase.ts # Supabase client
β βββ theme/ # Design tokens
βββ services/ # API and service layers
βββ store/ # Zustand state stores
βββ types/ # TypeScript type definitions
βββ utils/ # Helper functions
| Command | Description |
|---|---|
bun run start |
Start Expo development server |
bun run ios |
Run on iOS simulator (macOS only) |
bun run android |
Run on Android emulator |
bun run web |
Run in web browser |
bun run lint |
Run ESLint and fix issues |
bun run format |
Format code with Prettier |
bun run typecheck |
Check TypeScript types |
- Make sure
.envfile exists in the root directory - Restart the Expo development server after changing
.env - Variables must start with
EXPO_PUBLIC_to be accessible
- Verify your Supabase URL and anon key are correct
- Check that your Supabase project is active
- Ensure RLS policies are set up correctly
- Verify all three client IDs are set (web, iOS, Android)
- Check that redirect URIs are configured in Google Cloud Console
- For iOS: Ensure bundle ID matches (
com.pupunhaconf.app) - For Android: Ensure package name matches (
com.pupunhaconf.app)
- Check Expo Documentation
- Check Supabase Documentation
- Open an issue on GitHub
Made with β€οΈ for the Pupunha Code community
