An AI-powered job search assistant that helps you find and apply to jobs efficiently.
- 🤖 AI-powered job search and matching
- 📄 Resume parsing and optimization
- 🔍 Automated job discovery
- 📊 Application tracking
- 🔐 Secure credential management
- 🌐 PWA support with offline capabilities
- Frontend: React + Vite + TypeScript
- Backend: Supabase
- AI: OpenAI GPT-4
- Storage: Supabase Storage
- Auth: Supabase Auth
- PWA: Workbox + Vite PWA Plugin
- Testing: Vitest + Playwright
- CI/CD: GitHub Actions
-
Prerequisites
- Node.js 18+
- npm 9+
- Supabase account
- OpenAI API key
-
Installation
# Clone the repository git clone https://github.com/your-username/jobbyjob.git cd jobbyjob # Install dependencies npm install # Set up environment variables cp .env.example .env
-
Configuration
# Configure Supabase npm run setup:supabase # Configure OpenAI npm run setup:ai
-
Development
# Start development server npm run dev
-
Development
docker-compose -f docker-compose.dev.yml up
-
Production
docker-compose -f docker-compose.prod.yml up
- Offline support
- Background sync
- Push notifications
- Installable app
- Automatic updates
// Cache static assets
registerRoute(
({ request }) => {
return request.destination === 'style' ||
request.destination === 'script' ||
request.destination === 'image';
},
new StaleWhileRevalidate({
cacheName: 'static-resources'
})
);
// Handle API requests
registerRoute(
({ url }) => url.hostname.includes('supabase'),
new NetworkOnly()
);
// Initialize Supabase client
const supabase = createClient(url, key, {
auth: {
autoRefreshToken: true,
persistSession: true,
detectSessionInUrl: true
},
db: {
schema: 'public'
}
});
// Health check
const checkHealth = async () => {
try {
const { error } = await supabase
.from('profiles')
.select('count')
.limit(1)
.single();
return !error;
} catch (err) {
return false;
}
};
# Unit tests
npm run test
# E2E tests
npm run test:e2e
# Component tests
npm run test:components
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Open a pull request
MIT License - see LICENSE for details