A 2000s-style search engine built for educational purposes.
# Copy and configure environment
cp .env.example .env
# Deploy everything (creates network, builds images, starts all services)
./deploy.sh
# Open browser
open http://localhost:1323
# Live monitoring dashboard
open http://localhost:7070| Service | Language | Purpose |
|---|---|---|
| Engine | Go | Web interface, query handling, search results |
| Spider | Go | Web crawler, link discovery |
| Indexer | Rust | HTML parsing, word extraction, TF calculation |
| Ranking | Python | TF-IDF and PageRank scoring |
| Monitoring | TypeScript | Service orchestration, health checks, live dashboard |
Web → Spider → Indexer → Ranking → Engine → User
↑
Monitoring (watches & restarts all)
- Docker & Docker Compose V2
- Git
All other dependencies (PostgreSQL, Redis, language runtimes) run inside containers.
- Clone the repo and
cdinto it - Copy
.env.exampleto.envand fill in real secrets - Copy each
services/<svc>/.env.exampletoservices/<svc>/.env - Run
./deploy.sh
For a full teardown and clean rebuild:
./deploy.sh --pull --build --restart- Services Overview — service responsibilities and data flow
- docs/ENGINE.md — search architecture and templates
- docs/SPIDER.md — crawling algorithm and database schema
- docs/INDEXER.md — TF calculation and word extraction
- docs/RANKING.md — PageRank math and IDF scoring
- docs/MONITORING.md — tick lifecycle, policy engine, metrics API
See individual service READMEs in services/ for language-specific build commands.
Status: Learning project — not for production
License: MIT