{"id":31770221,"url":"https://github.com/champi-dev/devjobscolombia","last_synced_at":"2025-10-10T02:58:39.295Z","repository":{"id":317477001,"uuid":"1067580630","full_name":"champi-dev/devjobscolombia","owner":"champi-dev","description":null,"archived":false,"fork":false,"pushed_at":"2025-10-01T04:27:11.000Z","size":174,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-01T06:24:42.778Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/champi-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-01T04:21:55.000Z","updated_at":"2025-10-01T04:27:14.000Z","dependencies_parsed_at":"2025-10-01T06:35:15.316Z","dependency_job_id":null,"html_url":"https://github.com/champi-dev/devjobscolombia","commit_stats":null,"previous_names":["champi-dev/devjobscolombia"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/champi-dev/devjobscolombia","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/champi-dev%2Fdevjobscolombia","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/champi-dev%2Fdevjobscolombia/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/champi-dev%2Fdevjobscolombia/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/champi-dev%2Fdevjobscolombia/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/champi-dev","download_url":"https://codeload.github.com/champi-dev/devjobscolombia/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/champi-dev%2Fdevjobscolombia/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279002523,"owners_count":26083404,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-10T02:00:06.843Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-10-10T02:58:36.522Z","updated_at":"2025-10-10T02:58:39.290Z","avatar_url":"https://github.com/champi-dev.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Colombia Dev Jobs Aggregator Platform 🇨🇴\n\nA 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.\n\n## 🚀 Features\n\n- **Automated Job Scraping**: Collects jobs from multiple platforms every 5 minutes\n- **AI-Powered Evaluation**: Each job is evaluated with GPT-4 Mini for quality scoring\n- **Real-time Updates**: Jobs are updated in real-time with WebSocket support\n- **Smart Filtering**: Filter by location, technology, salary, experience level\n- **Dark Mode**: Full dark mode support for better developer experience\n- **Responsive Design**: Works perfectly on mobile, tablet, and desktop\n\n## 🛠️ Tech Stack\n\n### Frontend\n- **Next.js 14** with App Router\n- **TypeScript** for type safety\n- **Tailwind CSS** for styling\n- **shadcn/ui** component library\n- **React Query** for data fetching\n- **Zustand** for state management\n\n### Backend\n- **Node.js 22** with TypeScript\n- **Fastify** web framework\n- **Prisma ORM** with PostgreSQL\n- **Redis** for caching and job queues\n- **BullMQ** for background job processing\n- **OpenAI SDK** for GPT-4 Mini integration\n- **Playwright** for web scraping\n\n## 📋 Prerequisites\n\n- Node.js 21+ \n- Docker and Docker Compose\n- OpenAI API Key\n- PostgreSQL (via Docker)\n- Redis (via Docker)\n\n## 🔧 Installation\n\n1. **Clone the repository**\n```bash\ngit clone https://github.com/yourusername/jobreposter.git\ncd jobreposter\n```\n\n2. **Install dependencies**\n```bash\nnpm install\n```\n\n3. **Set up environment variables**\n```bash\ncp .env.example .env\n```\n\nEdit `.env` and add your OpenAI API key:\n```env\nOPENAI_API_KEY=sk-your-api-key-here\n```\n\n4. **Start Docker services**\n```bash\n# Start Docker Desktop first, then:\ndocker compose up -d postgres redis\n```\n\n5. **Run database migrations**\n```bash\ncd apps/api\nnpx prisma migrate dev\nnpx prisma generate\ncd ../..\n```\n\n6. **Start development servers**\n\nIn separate terminals:\n\n```bash\n# Terminal 1: Backend API\ncd apps/api\nnpm run dev\n\n# Terminal 2: Frontend\ncd apps/web\nnpm run dev\n```\n\nThe application will be available at:\n- Frontend: http://localhost:3000\n- API: http://localhost:3001\n- API Docs: http://localhost:3001/docs\n\n## 🐳 Docker Deployment\n\nTo run the entire stack with Docker:\n\n```bash\ndocker compose up -d\n```\n\nThis will start:\n- PostgreSQL database\n- Redis cache\n- Backend API\n- Frontend application\n\n## 📁 Project Structure\n\n```\njobreposter/\n├── apps/\n│   ├── api/                    # Backend API\n│   │   ├── src/\n│   │   │   ├── routes/         # API endpoints\n│   │   │   ├── services/       # Business logic\n│   │   │   │   ├── scraping/   # Web scrapers\n│   │   │   │   └── ai/         # AI evaluation\n│   │   │   ├── workers/        # Background jobs\n│   │   │   └── lib/            # Utilities\n│   │   └── prisma/             # Database schema\n│   │\n│   └── web/                    # Frontend Next.js app\n│       ├── app/                # App router pages\n│       ├── components/         # React components\n│       │   ├── ui/            # Base UI components\n│       │   ├── jobs/          # Job-related components\n│       │   └── layout/        # Layout components\n│       └── lib/               # Utilities\n│\n├── packages/                   # Shared packages\n├── docker-compose.yml         # Docker configuration\n└── turbo.json                # Turborepo config\n```\n\n## 🔍 API Endpoints\n\n### Jobs\n- `GET /api/jobs` - List jobs with filters\n- `GET /api/jobs/:id` - Get job details\n- `GET /api/jobs/:id/evaluation` - Get AI evaluation\n\n### Companies\n- `GET /api/companies` - List companies\n- `GET /api/companies/:id` - Company details\n- `GET /api/companies/:id/jobs` - Company jobs\n\n### Statistics\n- `GET /api/stats` - Platform statistics\n- `GET /api/stats/trends` - Tech trends\n- `GET /api/stats/salary-insights` - Salary data\n\n## 🤖 AI Evaluation Criteria\n\nJobs are evaluated on:\n- **Clarity** of requirements and responsibilities\n- **Technology Stack** modernity and relevance\n- **Company Culture** indicators\n- **Growth Opportunities**\n- **Compensation** fairness for Colombian market\n- **Work-Life Balance** (remote/hybrid options)\n\n## 🔄 Scraping Schedule\n\n- Jobs are scraped every 5 minutes\n- Inactive jobs (30+ days) are automatically archived\n- Duplicate detection prevents redundant listings\n- Each scraping run is logged for monitoring\n\n## 🚦 Development Commands\n\n```bash\n# Install dependencies\nnpm install\n\n# Run development servers\nnpm run dev\n\n# Build for production\nnpm run build\n\n# Run tests\nnpm run test\n\n# Lint code\nnpm run lint\n\n# Database commands\nnpm run db:migrate    # Run migrations\nnpm run db:generate   # Generate Prisma client\nnpm run db:push      # Push schema to database\nnpm run db:studio    # Open Prisma Studio\n```\n\n## 🌍 Environment Variables\n\nKey environment variables:\n\n```env\n# Database\nDATABASE_URL=postgresql://user:password@localhost:5432/colombia_dev_jobs\n\n# Redis\nREDIS_URL=redis://localhost:6379\n\n# OpenAI\nOPENAI_API_KEY=sk-...\nOPENAI_MODEL=gpt-4o-mini\n\n# Scraping\nSCRAPING_INTERVAL_MINUTES=5\nENABLE_AUTO_SCRAPING=true\n\n# API\nPORT=3001\nNEXT_PUBLIC_API_URL=http://localhost:3001\n```\n\n## 📝 License\n\nMIT\n\n## 🤝 Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## 🐛 Troubleshooting\n\n### Docker not running\nMake sure Docker Desktop is running before starting the containers.\n\n### Port already in use\nChange the ports in docker-compose.yml or .env file.\n\n### Database connection issues\nEnsure PostgreSQL is running and the DATABASE_URL is correct.\n\n### OpenAI API errors\nVerify your API key is valid and has sufficient credits.\n\n## 🎯 Roadmap\n\n- [ ] Add more job platforms (Indeed, Computrabajo, etc.)\n- [ ] Email notifications for job matches\n- [ ] User accounts and saved searches\n- [ ] Mobile app (React Native)\n- [ ] Advanced analytics dashboard\n- [ ] Resume matching scores\n- [ ] Salary prediction model\n\n## 📧 Contact\n\nFor questions or support, please open an issue on GitHub.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchampi-dev%2Fdevjobscolombia","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchampi-dev%2Fdevjobscolombia","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchampi-dev%2Fdevjobscolombia/lists"}