Skip to content

jankowskaweronika/code-galaxy

Repository files navigation

🚀 CodeGalaxy

Screen.Recording.2024-12-13.at.7.12.40.PM.mov

Your Journey to Programming Excellence

Show Image Modern Educational Platform Built with React & TypeScript

📚 Features:

🔐 User Authentication Screenshot 2024-12-13 at 7 15 47 PM Screenshot 2024-12-13 at 7 15 38 PM

Email/Password registration and login Google OAuth integration Protected routes for authenticated users Password reset functionality User profile management

📖 Course Management Browse available courses Purchase courses Track learning progress Course content organized by topics Difficulty levels and duration tracking

🎯 User Dashboard Personal profile overview Course progress tracking Purchased courses management User settings

💫 UI/UX Responsive design supporting multiple screen sizes Material-UI components Consistent theming Loading states and error handling Search functionality for courses Interactive navigation

🛠 Tech Stack:

Core ⚛️ React 18 📘 TypeScript 🔥 Firebase (Authentication & Firestore) 🛣 React Router v6

UI Framework 🎨 Material-UI (MUI) 🧩 Custom components 📱 Responsive layouts 🎭 Custom theming

State Management 🔄 React Context API 🎣 Custom hooks for business logic

Development Tools ⚙️ Strict TypeScript configuration 🔍 ESLint 🔮 Modern JavaScript (ES2015+)

📁 Project Structure Copysrc/ ├── 📂 auth/ # Authentication context and protected routes ├── 📂 components/ # Reusable UI components ├── 📂 config/ # Firebase configuration ├── 📂 layouts/ # Page layout components ├── 📂 pages/ # Application pages ├── 📂 types/ # TypeScript type definitions ├── 📂 utils/ # Utility functions and services └── 📂 hooks/ # Custom React hooks

🚀 Setup Instructions 1️⃣ Clone the repository 2️⃣ Install dependencies: bashCopynpm install 3️⃣ Create a Firebase project and obtain configuration:

Go to Firebase Console Create a new project Enable Authentication (Email/Password and Google) Enable Firestore Copy your Firebase configuration

4️⃣ Create .env file in the root directory: envCopyVITE_FIREBASE_API_KEY=your_api_key VITE_FIREBASE_AUTH_DOMAIN=your_auth_domain VITE_FIREBASE_PROJECT_ID=your_project_id VITE_FIREBASE_STORAGE_BUCKET=your_storage_bucket VITE_FIREBASE_MESSAGING_SENDER_ID=your_messaging_sender_id VITE_FIREBASE_APP_ID=your_app_id VITE_FIREBASE_MEASUREMENT_ID=your_measurement_id

5️⃣ Start the development server: bash: npm run dev

🏗 Key Components: Layouts: MainLayout: General page layout with navigation AuthLayout: Layout for authentication pages DashboardUserLayout: Dashboard layout with sidebar navigation PageLayout: Generic page layout with customizable options

Authentication: AuthContext: Manages authentication state ProtectedRoute: Route wrapper for authenticated access Custom hooks for login/register functionality

Course Management: CourseCard: Display course information CoursesGridLayout: Grid layout for course listing courseService: Service for course-related operations

🔥 Firebase Structure Authentication

Email/Password authentication Google OAuth provider User profile management

Firestore Collections: courses: Course information users/{userId}/coursesProgress: User progress tracking

📝 Development Guidelines TypeScript Strict type checking enabled Types defined using type keyword Comprehensive type definitions for components

Component Structure Functional components with TypeScript Props interface definitions Use of appropriate layouts Error boundary implementation

State Management Context API for global state Local state with useState Custom hooks for complex logic

🤝 Contributing Fork the repository Create a feature branch Commit your changes Push to the branch Create a Pull Request

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors