Skip to content

danielhergil/twigg

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Twigg πŸŽ“

Twigg leverages AI to rapidly craft dynamic, personalized courses with adaptive learning, delivering engaging educational experiences tailored to every learner. Learn smarter, faster, and share your courses with Twigg!

πŸš€ Overview

Twigg is an innovative educational platform built with React Native and Expo that harnesses the power of artificial intelligence to create personalized learning experiences. Our platform enables educators and learners to create, discover, and engage with dynamic courses that adapt to individual learning styles and progress.

Key Features

  • πŸ€– AI-Powered Course Creation - Automatically generate course content and structure
  • πŸ“Š Adaptive Learning - Personalized learning paths that adjust to user progress
  • 🎯 Dynamic Content - Interactive lessons that evolve based on learner engagement
  • πŸ“± Cross-Platform - Available on iOS, Android, and Web
  • πŸ”„ Real-time Progress Tracking - Monitor learning analytics and achievements
  • 🌐 Course Sharing - Share and discover courses within the community
  • 🎨 Modern UI/UX - Beautiful, intuitive interface with smooth animations

πŸ› οΈ Technology Stack

  • Frontend: React Native 0.79.1 with TypeScript
  • Framework: Expo ^53.0.0
  • Navigation: Expo Router + React Navigation
  • Backend: Firebase (Authentication, Firestore, Storage)
  • UI Components: Custom components with Lucide Icons
  • Styling: Linear Gradients + Custom styling
  • Fonts: Inter & Poppins via Expo Google Fonts

πŸ“‹ Prerequisites

Before you begin, ensure you have the following installed on your local machine:

  • Node.js (version 18.0.0 or higher)
    # Check your Node.js version
    node --version
  • npm or yarn package manager
  • Git for version control
  • Expo CLI globally installed
    npm install -g @expo/cli
  • Mobile device with Expo Go app OR Android/iOS simulator

Development Environment Setup

For iOS Development (macOS only):

  • Xcode (latest version from App Store)
  • iOS Simulator (included with Xcode)

For Android Development:

  • Android Studio with Android SDK
  • Android Emulator or physical Android device

πŸš€ Local Development Setup

Follow these detailed steps to get Twigg running on your local machine:

Step 1: Clone the Repository

# Clone the repository
git clone <repository-url>
cd twigg

# Verify you're in the correct directory
ls -la

Step 2: Install Dependencies

# Install all project dependencies
npm install

# Alternative with yarn
# yarn install

# Verify installation
npm list --depth=0

Step 3: Environment Configuration

  1. Create environment file:

    # Create .env file in the root directory
    touch .env
  2. Configure Firebase:

    • Go to Firebase Console
    • Create a new project or use existing one
    • Enable the following services:
      • Authentication (Email/Password)
      • Firestore Database
      • Storage
    • Download the configuration file and add credentials to .env:
    # Firebase Configuration
    EXPO_PUBLIC_FIREBASE_API_KEY=your_api_key_here
    EXPO_PUBLIC_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
    EXPO_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
    EXPO_PUBLIC_FIREBASE_STORAGE_BUCKET=your_project.appspot.com
    EXPO_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
    EXPO_PUBLIC_FIREBASE_APP_ID=your_app_id

Step 4: Firebase Setup

  1. Initialize Firestore Database:

    • Go to Firestore Database in Firebase Console
    • Create database in test mode
    • Set up basic collections: users, courses, progress
  2. Configure Authentication:

    • Enable Email/Password authentication
    • Optionally enable Google/Apple sign-in
  3. Set up Storage:

    • Enable Firebase Storage for course media files
    • Configure security rules as needed

Step 5: Start the Development Server

# Start Expo development server
npm run dev

# Alternative command
# expo start

# For web development specifically
# npm run build:web

Step 6: Run on Device/Simulator

Option A: Physical Device

  1. Install Expo Go app from App Store/Google Play
  2. Scan the QR code displayed in terminal/browser
  3. App will load on your device

Option B: iOS Simulator (macOS only)

# Press 'i' in the terminal after starting dev server
# Or run directly:
expo start --ios

Option C: Android Emulator

# Press 'a' in the terminal after starting dev server
# Or run directly:
expo start --android

Option D: Web Browser

# Press 'w' in the terminal after starting dev server
# Or run directly:
expo start --web

Step 7: Verify Installation

  1. Check app loads successfully on your chosen platform
  2. Test navigation between tabs (Dashboard, Explore, Create, Profile)
  3. Verify Firebase connection by attempting to sign up/sign in
  4. Test course creation and content loading

πŸ“ Project Structure

twigg/
β”œβ”€β”€ πŸ“± app/                     # App screens (Expo Router)
β”‚   β”œβ”€β”€ 🏠 (tabs)/             # Tab navigation screens
β”‚   β”‚   β”œβ”€β”€ index.tsx          # Dashboard - Course progress & stats
β”‚   β”‚   β”œβ”€β”€ explore.tsx        # Course catalog & discovery
β”‚   β”‚   β”œβ”€β”€ create.tsx         # AI-powered course creation
β”‚   β”‚   └── profile.tsx        # User profile & settings
β”‚   β”œβ”€β”€ πŸ” auth/               # Authentication screens
β”‚   β”‚   β”œβ”€β”€ login.tsx          # User login
β”‚   β”‚   └── register.tsx       # User registration
β”‚   β”œβ”€β”€ _layout.tsx            # Root layout configuration
β”‚   └── +not-found.tsx         # 404 error page
β”œβ”€β”€ 🧩 components/             # Reusable UI components
β”œβ”€β”€ 🎣 hooks/                  # Custom React hooks
β”œβ”€β”€ πŸ“ types/                  # TypeScript type definitions
β”œβ”€β”€ πŸ› οΈ utils/                  # Helper functions & utilities
β”œβ”€β”€ 🎨 assets/                 # Images, fonts, and static files
β”œβ”€β”€ πŸ“¦ package.json            # Project dependencies
β”œβ”€β”€ βš™οΈ app.json               # Expo configuration
β”œβ”€β”€ πŸ“˜ tsconfig.json          # TypeScript configuration
└── πŸ”§ .prettierrc            # Code formatting rules

🎯 Available Scripts

# Development
npm run dev              # Start development server with hot reload
npm run lint            # Run ESLint for code quality checks

# Building
npm run build:web       # Build optimized web version

# Expo specific
expo start              # Start Expo development server
expo start --clear      # Start with cleared cache
expo install            # Install compatible versions of dependencies

πŸ”§ Development Workflow

Making Changes

  1. Hot Reload: Changes are automatically reflected while dev server runs
  2. TypeScript: All files use TypeScript for type safety
  3. Linting: Run npm run lint before committing
  4. Testing: Test on multiple platforms before deployment

Common Development Tasks

Adding New Dependencies

# Use Expo install for better compatibility
expo install package-name

# For development dependencies
npm install --save-dev package-name

Debugging

  • Use Flipper for advanced debugging
  • React Developer Tools for component inspection
  • Console logs appear in terminal and browser console

πŸš€ Deployment

Web Deployment

# Build for web
npm run build:web

# Deploy to hosting service (Netlify, Vercel, etc.)

Mobile App Deployment

# Build with EAS (Expo Application Services)
npm install -g eas-cli
eas login
eas build --platform all

🀝 Contributing

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

Development Guidelines

  • Follow TypeScript best practices
  • Write meaningful commit messages
  • Test on both iOS and Android
  • Update documentation for new features

πŸ› Troubleshooting

Common Issues

Metro bundler issues:

# Clear Metro cache
expo start --clear
# or
npx react-native start --reset-cache

Node modules issues:

# Clean install
rm -rf node_modules package-lock.json
npm install

Expo CLI issues:

# Update Expo CLI
npm install -g @expo/cli@latest

Firebase connection issues:

  • Verify .env file configuration
  • Check Firebase project settings
  • Ensure proper authentication rules

πŸ“š Learning Resources

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ‘₯ Team

Developed with ❀️ during a hackathon by the Twigg team.

πŸ“ž Support

  • πŸ› Bug Reports: Open an issue on GitHub
  • πŸ’‘ Feature Requests: Create a feature request issue
  • πŸ’¬ Questions: Start a discussion in the repository

Ready to revolutionize learning with AI? Let's build the future of education together! πŸš€

About

Course hobby platform

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors