A modern React.js web application for podcast management, built with Vite, TypeScript, and Clerk authentication.
./setup-web.sh# 1. Install dependencies
npm install
# 2. Create environment file
cp env.example .env
# 3. Edit .env with your credentials
# 4. Start development server
npm run devCreate a .env file in the project root:
VITE_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
VITE_FIREBASE_API_KEY=your_firebase_api_key
VITE_FIREBASE_AUTH_DOMAIN=your_firebase_auth_domain
VITE_FIREBASE_PROJECT_ID=your_firebase_project_id
VITE_FIREBASE_STORAGE_BUCKET=your_firebase_storage_bucket
VITE_FIREBASE_MESSAGING_SENDER_ID=your_firebase_messaging_sender_id
VITE_FIREBASE_APP_ID=your_firebase_app_id
VITE_NEWS_API_KEY=your_news_api_keysrc/
├── components/ # Reusable UI components
│ └── LoadingSpinner.tsx
├── hooks/ # Custom React hooks
│ └── useGoogleAuth.ts
├── lib/ # Utilities and configurations
│ └── firebase.ts
├── pages/ # Page components
│ ├── HomePage.tsx
│ ├── LoginPage.tsx
│ ├── ProfilePage.tsx
│ └── SignUpPage.tsx
├── App.tsx # Main app component with routing
├── main.tsx # Application entry point
└── index.css # Global styles
npm run dev- Start development server (http://localhost:3000)npm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLint
- Email/Password - Traditional login and signup
- Google OAuth - Social authentication
- Email Verification - Built-in verification flow
- Protected Routes - Automatic redirects based on auth state
- User Management - Profile management and account settings
- Responsive Design - Works on desktop and mobile
- Modern UI - Clean, professional interface
- Loading States - Proper loading indicators
- Form Validation - Client-side validation with error handling
- Navigation - Intuitive routing between pages
- React 18 - UI library with hooks
- TypeScript - Type safety and better DX
- Vite - Fast build tool and dev server
- React Router - Client-side routing
- Clerk - Authentication and user management
- Firebase - Database and backend services
- CSS3 - Modern styling with custom properties
- Create a Clerk account at clerk.com
- Create a new application
- Copy the publishable key to your
.envfile - Configure OAuth providers in the Clerk dashboard
- Create a Firebase project at console.firebase.google.com
- Enable Firestore database
- Copy the config values to your
.envfile - Set up Firestore security rules
npm run build
# Deploy the dist folder to Vercelnpm run build
# Deploy the dist folder to NetlifyThe app builds to a static dist folder that can be deployed to any static hosting service.
-
Environment Variables Not Loading
- Ensure all variables start with
VITE_ - Restart the dev server after changing
.env
- Ensure all variables start with
-
Google OAuth Not Working
- Check Clerk dashboard OAuth settings
- Verify redirect URLs are configured
-
Firebase Connection Issues
- Verify Firebase config values
- Check Firestore security rules
-
Build Errors
- Run
npm run lintto check for code issues - Ensure all dependencies are installed
- Run
- The app uses React 18 with functional components and hooks
- TypeScript is configured for strict type checking
- ESLint is set up for code quality
- CSS uses modern features like custom properties and flexbox
- All components are fully typed with TypeScript interfaces
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests and linting
- Submit a pull request
This project is private and proprietary.