A .NET 10 scraping platform with plugin architecture.
Ghost is built with a layered architecture that provides clear separation of concerns and extensibility:
- Layer 0 - Kernel: Core engine, stealth, sessions, proxies
- Layer 1 - Contracts: Public interfaces, DTOs, shared contracts
- Layer 2 - Plugins: Platform-specific plugins (LinkedIn, Indeed, Google, Glassdoor, etc.)
- Layer 3 - Platform: Shared infrastructure (Abstractions, Contracts, Extensions, Hosting, Observability, Storage)
- Layer 4 - Engine: Scraper engines
- Layer 5 - Apps: Deployable entrypoints (WebApi, Worker)
- Layer 6 - Sdk: Framework for building scrapers
Ghost/
├── src/
│ ├── Kernel/Ghost/ # Core engine (renamed from Core)
│ ├── Contracts/ # Public interfaces and DTOs
│ ├── Plugins/ # Platform-specific plugins
│ │ ├── Ghost.Plugin.LinkedIn/
│ │ ├── Ghost.Plugin.Indeed/
│ │ ├── Ghost.Plugin.Google/
│ │ └── ...
│ ├── Platform/ # Shared infrastructure
│ │ ├── Abstractions/
│ │ ├── Contracts/
│ │ ├── Extensions/
│ │ ├── Hosting/
│ │ ├── Observability/
│ │ └── Storage/
│ ├── Engine/ # Scraper engines
│ ├── Apps/ # Deployable entrypoints
│ │ ├── Ghost.WebApi/
│ │ └── Ghost.Worker/
│ └── Sdk/ # Framework for building scrapers
├── tests/ # Test projects with suffix taxonomy
│ ├── Kernel/ # Kernel tests
│ ├── Platform/ # Platform tests
│ ├── Plugins/ # Plugin tests
│ ├── Apps/ # Application tests
│ ├── Engine/ # Engine tests
│ ├── Contracts/ # Contracts tests
│ ├── Sdk/ # SDK tests
│ ├── Shared/ # Shared testing infrastructure
│ ├── Legacy/ # Legacy tests (preserved for reference)
│ └── Architecture/ # Architecture tests
├── docs/ # Documentation
├── Ghost.sln # Solution file
└── docker-compose.yml # Docker composition
Build the entire solution:
dotnet build Ghost.slnRun all tests:
dotnet test Ghost.slnBuild and run with Docker Compose:
docker-compose upBuild specific service:
docker-compose build ghost-webapi- Clone the repository
- Restore dependencies:
dotnet restore Ghost.sln - Build the solution:
dotnet build Ghost.sln - Run tests:
dotnet test Ghost.sln - Run the Web API:
dotnet run --project src/Apps/Ghost.WebApi/Ghost.WebApi.csproj
- Plugin Architecture: Extensible plugin system for adding new job boards
- Stealth Mode: Advanced browser fingerprinting and behavior mimicking
- Proxy Management: Rotating proxy support with health checking
- Resilience: Circuit breaker and retry patterns for reliability
- Observability: Structured logging, metrics, and health checks
- Multi-Platform: Support for LinkedIn, Indeed, Google, Glassdoor, and more
Contributions are welcome! Please ensure all tests pass and follow the coding standards defined in AGENTS.md.
This project is licensed under the MIT License - see the LICENSE file for details.