Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FastAPI Next.js 16 Celery Docker MIT

TenderHunter

EU public procurement intelligence. Discover, track, and analyze government tenders — automatically.


What it does

Discovers — Aggregates tenders from TED, Tenders.Guru, and national procurement databases. Runs on schedule via Celery Beat.

Matches — Scores each tender against your preferences. Surface the opportunities that matter.

Alerts — Email notifications the moment a relevant tender appears. Via SendGrid.

Analyzes — AI-generated intelligence digests. Understand the competitive landscape.

Bills — Stripe-integrated subscription tiers — Solo, Growth, Scale.


Stack

Backend

API FastAPI · async · Python 3.11+
Database PostgreSQL 16 · SQLAlchemy · Alembic
Workers Celery · Redis · Beat scheduler
Auth JWT · Passlib · bcrypt
Payments Stripe
Email SendGrid
Reports WeasyPrint PDF generation

Frontend

Framework Next.js 16
Styling Tailwind CSS 4
Language TypeScript

Infrastructure

Orchestration Docker Compose
Broker & Cache Redis 7
Database PostgreSQL 16

Quick Start

git clone https://github.com/Kumar-Gaurav-1/tenderhunter.git
cd tenderhunter
cp backend/.env.example backend/.env    # Configure your keys
docker-compose up --build
Service URL
Frontend localhost:3000
API localhost:8000
API Docs localhost:8000/docs

Configuration

All configuration lives in backend/.env.example. Key variables:

Variable Purpose Required
SECRET_KEY JWT signing Yes
DATABASE_URL PostgreSQL connection Auto (Docker)
REDIS_URL Cache and broker Auto (Docker)
SENDGRID_API_KEY Email alerts Optional
STRIPE_SECRET_KEY Billing Optional

See backend/.env.example for the complete list including tender APIs, translation services, and currency providers.


Architecture

tenderhunter/
├── backend/
│   └── app/
│       ├── api/v1/         REST endpoints — tenders, users, billing, intelligence
│       ├── connectors/     External API integrations — TED, Tenders.Guru
│       ├── models/         SQLAlchemy ORM
│       ├── schemas/        Pydantic validation
│       ├── services/       Business logic — matching, translation, currency, email
│       ├── tasks/          Celery — ingestion, scoring, digests, cleanup
│       ├── main.py         FastAPI entry point
│       └── config.py       Settings via pydantic-settings
├── frontend/
│   └── src/app/            Next.js App Router — auth, dashboard, billing, onboarding
├── docker-compose.yml      Five services: API, worker, scheduler, Postgres, Redis
└── LICENSE

Development

# Backend only
cd backend && python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]" && uvicorn app.main:app --reload

# Frontend only
cd frontend && npm install && npm run dev

# Tests
cd backend && pytest

Limitations

  • Tender data availability depends on free-tier EU procurement APIs
  • PDF generation requires system dependencies — handled in Docker
  • Stripe uses test keys by default

MIT License

About

EU public procurement intelligence — automated tender discovery, tracking, and analysis

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages