An open API service indexing awesome lists of open source software.

https://github.com/champi-dev/devjobscolombia


https://github.com/champi-dev/devjobscolombia

Last synced: 9 months ago
JSON representation

Awesome Lists containing this project

README

          

# Colombia Dev Jobs Aggregator Platform 🇨🇴

A modern fullstack web application that aggregates developer job listings from Colombia, automatically updates them every 5 minutes, enriches them with company information, and provides AI-powered job evaluation using GPT-4 Mini.

## 🚀 Features

- **Automated Job Scraping**: Collects jobs from multiple platforms every 5 minutes
- **AI-Powered Evaluation**: Each job is evaluated with GPT-4 Mini for quality scoring
- **Real-time Updates**: Jobs are updated in real-time with WebSocket support
- **Smart Filtering**: Filter by location, technology, salary, experience level
- **Dark Mode**: Full dark mode support for better developer experience
- **Responsive Design**: Works perfectly on mobile, tablet, and desktop

## 🛠️ Tech Stack

### Frontend
- **Next.js 14** with App Router
- **TypeScript** for type safety
- **Tailwind CSS** for styling
- **shadcn/ui** component library
- **React Query** for data fetching
- **Zustand** for state management

### Backend
- **Node.js 22** with TypeScript
- **Fastify** web framework
- **Prisma ORM** with PostgreSQL
- **Redis** for caching and job queues
- **BullMQ** for background job processing
- **OpenAI SDK** for GPT-4 Mini integration
- **Playwright** for web scraping

## 📋 Prerequisites

- Node.js 21+
- Docker and Docker Compose
- OpenAI API Key
- PostgreSQL (via Docker)
- Redis (via Docker)

## 🔧 Installation

1. **Clone the repository**
```bash
git clone https://github.com/yourusername/jobreposter.git
cd jobreposter
```

2. **Install dependencies**
```bash
npm install
```

3. **Set up environment variables**
```bash
cp .env.example .env
```

Edit `.env` and add your OpenAI API key:
```env
OPENAI_API_KEY=sk-your-api-key-here
```

4. **Start Docker services**
```bash
# Start Docker Desktop first, then:
docker compose up -d postgres redis
```

5. **Run database migrations**
```bash
cd apps/api
npx prisma migrate dev
npx prisma generate
cd ../..
```

6. **Start development servers**

In separate terminals:

```bash
# Terminal 1: Backend API
cd apps/api
npm run dev

# Terminal 2: Frontend
cd apps/web
npm run dev
```

The application will be available at:
- Frontend: http://localhost:3000
- API: http://localhost:3001
- API Docs: http://localhost:3001/docs

## 🐳 Docker Deployment

To run the entire stack with Docker:

```bash
docker compose up -d
```

This will start:
- PostgreSQL database
- Redis cache
- Backend API
- Frontend application

## 📁 Project Structure

```
jobreposter/
├── apps/
│ ├── api/ # Backend API
│ │ ├── src/
│ │ │ ├── routes/ # API endpoints
│ │ │ ├── services/ # Business logic
│ │ │ │ ├── scraping/ # Web scrapers
│ │ │ │ └── ai/ # AI evaluation
│ │ │ ├── workers/ # Background jobs
│ │ │ └── lib/ # Utilities
│ │ └── prisma/ # Database schema
│ │
│ └── web/ # Frontend Next.js app
│ ├── app/ # App router pages
│ ├── components/ # React components
│ │ ├── ui/ # Base UI components
│ │ ├── jobs/ # Job-related components
│ │ └── layout/ # Layout components
│ └── lib/ # Utilities

├── packages/ # Shared packages
├── docker-compose.yml # Docker configuration
└── turbo.json # Turborepo config
```

## 🔍 API Endpoints

### Jobs
- `GET /api/jobs` - List jobs with filters
- `GET /api/jobs/:id` - Get job details
- `GET /api/jobs/:id/evaluation` - Get AI evaluation

### Companies
- `GET /api/companies` - List companies
- `GET /api/companies/:id` - Company details
- `GET /api/companies/:id/jobs` - Company jobs

### Statistics
- `GET /api/stats` - Platform statistics
- `GET /api/stats/trends` - Tech trends
- `GET /api/stats/salary-insights` - Salary data

## 🤖 AI Evaluation Criteria

Jobs are evaluated on:
- **Clarity** of requirements and responsibilities
- **Technology Stack** modernity and relevance
- **Company Culture** indicators
- **Growth Opportunities**
- **Compensation** fairness for Colombian market
- **Work-Life Balance** (remote/hybrid options)

## 🔄 Scraping Schedule

- Jobs are scraped every 5 minutes
- Inactive jobs (30+ days) are automatically archived
- Duplicate detection prevents redundant listings
- Each scraping run is logged for monitoring

## 🚦 Development Commands

```bash
# Install dependencies
npm install

# Run development servers
npm run dev

# Build for production
npm run build

# Run tests
npm run test

# Lint code
npm run lint

# Database commands
npm run db:migrate # Run migrations
npm run db:generate # Generate Prisma client
npm run db:push # Push schema to database
npm run db:studio # Open Prisma Studio
```

## 🌍 Environment Variables

Key environment variables:

```env
# Database
DATABASE_URL=postgresql://user:password@localhost:5432/colombia_dev_jobs

# Redis
REDIS_URL=redis://localhost:6379

# OpenAI
OPENAI_API_KEY=sk-...
OPENAI_MODEL=gpt-4o-mini

# Scraping
SCRAPING_INTERVAL_MINUTES=5
ENABLE_AUTO_SCRAPING=true

# API
PORT=3001
NEXT_PUBLIC_API_URL=http://localhost:3001
```

## 📝 License

MIT

## 🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

## 🐛 Troubleshooting

### Docker not running
Make sure Docker Desktop is running before starting the containers.

### Port already in use
Change the ports in docker-compose.yml or .env file.

### Database connection issues
Ensure PostgreSQL is running and the DATABASE_URL is correct.

### OpenAI API errors
Verify your API key is valid and has sufficient credits.

## 🎯 Roadmap

- [ ] Add more job platforms (Indeed, Computrabajo, etc.)
- [ ] Email notifications for job matches
- [ ] User accounts and saved searches
- [ ] Mobile app (React Native)
- [ ] Advanced analytics dashboard
- [ ] Resume matching scores
- [ ] Salary prediction model

## 📧 Contact

For questions or support, please open an issue on GitHub.