Skip to content

About

No description, website, or topics provided.

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

31 Commits

Folders and files

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

Repository files navigation

🎀 Pupunha Conf

pupunhasdsds

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


πŸ“– Table of Contents


✨ Features

  • πŸ“… 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

πŸ› οΈ Technologies

  • 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)

πŸ“‹ Prerequisites

Before you begin, make sure you have the following installed:

Required

  • Bun (v1.0 or higher) - Package manager and runtime
    • Install: curl -fsSL https://bun.sh/install | bash
    • Or use npm: npm install -g bun
  • Node.js (v18 or higher) - Required for Expo
  • Git - Version control

For Mobile Development

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)

Optional

  • Expo Go app on your phone for quick testing
  • EAS CLI for building production apps

πŸš€ Quick Start

1. Clone the Repository

git clone https://github.com/pupunha-code/pupunha-conf
cd pupunha-conf

2. Install Dependencies

bun install

Note: If you don't have Bun installed, you can use npm instead:

npm install

3. Set Up Environment Variables

Copy the example environment file:

cp .env.example .env

Then edit .env and fill in your configuration values (see Environment Setup below).

4. Set Up Supabase Database

Run the SQL schema in your Supabase project (see Database Setup below).

5. Start the Development Server

bun run start

This will start the Expo development server. You can then:

  • Press i to open iOS simulator
  • Press a to open Android emulator
  • Press w to open in web browser
  • Scan the QR code with Expo Go app on your phone

πŸ”§ Environment Setup

The app requires several environment variables to function properly. Create a .env file in the root directory based on .env.example.

Required Variables

Supabase Configuration

  1. 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
  2. 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)
  3. Add to .env:

    EXPO_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
    EXPO_PUBLIC_SUPABASE_ANON_KEY=your-anon-key-here

Google OAuth Configuration

  1. Create a Google Cloud project:

  2. 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)
  3. 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

Optional Variables

LogRocket (Analytics)

If you want to use LogRocket for error tracking and analytics:

  1. Sign up at logrocket.com
  2. Create a new project
  3. Copy your App ID
  4. Add to .env:
    EXPO_PUBLIC_LOGROCKET_APP_ID=your-logrocket-app-id

App Version

EXPO_PUBLIC_APP_VERSION=1.0.0

πŸ—„οΈ Database Setup

The app uses Supabase for data storage and authentication. You need to set up the database schema.

Steps

  1. Open your Supabase project
  2. Go to SQL Editor (in the left sidebar)
  3. Copy and paste the contents of supabase-schema.sql
  4. Click "Run" to execute the SQL

This will create:

  • profiles table - User profiles
  • feed_posts table - Social feed posts
  • Storage bucket for images
  • Row Level Security (RLS) policies
  • Triggers for automatic profile creation

Verify Setup

After running the SQL, verify:

  • Tables are created: Go to Table Editor β†’ Check profiles and feed_posts
  • Storage bucket exists: Go to Storage β†’ Check feed-images bucket
  • RLS is enabled: Check table settings

πŸ’» Running the App

Development Mode

Start the Expo development server:

bun run start

This opens the Expo DevTools. You can then:

  • iOS Simulator (macOS only):

    bun run ios

    Or press i in the Expo DevTools

  • Android Emulator:

    bun run android

    Or press a in the Expo DevTools

  • Web Browser:

    bun run web

    Or press w in 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

Production Build

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 android

πŸ“ Project Structure

src/
β”œβ”€β”€ 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

πŸ“œ Available Scripts

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

πŸ” Troubleshooting

Environment variables not loading

  • Make sure .env file exists in the root directory
  • Restart the Expo development server after changing .env
  • Variables must start with EXPO_PUBLIC_ to be accessible

Supabase connection errors

  • Verify your Supabase URL and anon key are correct
  • Check that your Supabase project is active
  • Ensure RLS policies are set up correctly

Google OAuth not working

  • 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)

Getting Help


Made with ❀️ for the Pupunha Code community

About

No description, website, or topics provided.

Resources

Contributing

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages