Your European Home Finder
A modern property search aggregator that searches across multiple European real estate portals in real-time. Built with GraphQL, Svelte, and a thin client architecture.
"Tadaima" (ใใ ใใพ) is Japanese for "I'm home" - the perfect name for a service that helps you find your next home across Europe.
- ๐ Multi-country search - Search properties across 30+ European countries
- โก Real-time results - Live data from multiple property portals
- ๐ฏ Smart aggregation - Deduplicates and normalizes results
- ๐ Fast & modern - Built with GraphQL and Svelte
- ๐ฑ Responsive design - Works on all devices
- ImmoScout24 (Germany) ๐ฉ๐ช
- Idealista (Spain, Italy, Portugal) ๐ช๐ธ๐ฎ๐น๐ต๐น
- Daft (Ireland) ๐ฎ๐ช
- FINN.no (Norway) ๐ณ๐ด
- Hemnet (Sweden) ๐ธ๐ช
- Immoweb (Belgium) ๐ง๐ช
- Otodom (Poland) ๐ต๐ฑ
- Ingatlan (Hungary) ๐ญ๐บ
- Rightmove (UK), Funda (Netherlands), SeLoger (France), and more
Thin Client Approach - No data storage, real-time API aggregation:
- GraphQL Server - Aggregates multiple property APIs in parallel
- Svelte Frontend - Modern, fast, reactive UI
- TypeScript - Full type safety across the stack
- Node.js 18+
- API keys from property portals (see
.env.example
)
# Clone and install
npm run install:all
# Start development servers
npm run dev # Starts GraphQL server
npm run dev:frontend # Starts Svelte frontend (separate terminal)
# Or use Docker
npm run docker:dev
Copy .env.example
to .env
and add your API keys:
# Get API keys from:
IMMOSCOUT24_API_KEY= # https://api.immobilienscout24.de/
IDEALISTA_API_KEY= # https://developers.idealista.com/
DAFT_API_KEY= # https://api.daft.ie/doc/v3/
# ... etc
File Pattern | Purpose | Commit to Git? | Contains Secrets? |
---|---|---|---|
.env.example |
Template with placeholder values | โ YES | โ No |
.env.sandbox |
Safe sandbox/demo configuration | โ YES | โ No |
.env |
Local development with real API keys | โ NEVER | โ Yes |
.env.local |
Local overrides | โ NEVER | โ Yes |
.env.production |
Production secrets | โ NEVER | โ Yes |
.env.test |
Test environment | โ NEVER | โ Maybe |
๐จ CRITICAL: Never commit files containing real API keys, tokens, or secrets!
-
Safe to Commit:
.env.example
- Contains placeholder values likeyour_api_key_here
.env.sandbox
- Contains demo/public API endpoints only
-
NEVER Commit:
.env
- Your personal development API keys.env.local
- Local environment overrides.env.production
- Production secrets.env.test
- May contain test API keys
-
Protected by
.gitignore
:# dotenv environment variables file - NEVER commit secrets! .env .env.local .env.development.local .env.test.local .env.production.local .env.test # Allow example and sandbox files to be committed !.env.example !.env.sandbox
- Copy template:
cp .env.example .env
- Add real API keys to your local
.env
file - Never commit your
.env
file - Update
.env.example
when adding new environment variables (with placeholder values)
Each workspace (frontend, graphql-server) can have its own environment files:
โโโ .env.example # Root-level shared config
โโโ .env.sandbox # Sandbox configuration
โโโ frontend/
โ โโโ .env.example # Frontend-specific template
โ โโโ .env # Your frontend config (not committed)
โโโ graphql-server/
โ โโโ .env.example # Server-specific template
โ โโโ .env # Your server config (not committed)
Visit http://localhost:4000
for the GraphQL playground.
# Search properties
query SearchProperties {
properties(
filters: {
country: "DE",
minPrice: 200000,
maxPrice: 500000,
propertyType: APARTMENT
}
page: 1, limit: 10
) {
totalCount
properties {
id, title, price, currency
address { city, country }
source { name }
url
}
}
}
# Get countries & API status
query Metadata {
countries { code, name, flag }
apiStatus { source, isOnline }
}
Visit http://localhost:5173
for the Svelte application.
npm run build # Build all packages
npm run test # Run all tests
npm run lint # Lint all packages
npm run check # TypeScript checks
npm run health # Health check server
tadaima/
โโโ graphql-server/ # GraphQL API aggregator
โโโ frontend/ # Svelte application
โโโ shared/ # Shared types & config
โโโ docs/ # Documentation
- Fork the repository
- Create a feature branch
- Add tests for new functionality
- Ensure all tests pass
- Submit a pull request
npm run docker:build
npm run docker:up
npm run build
npm start
See /docs
for detailed API documentation and integration guides.
MIT License - see LICENSE for details.
- ๐ง Issues: GitHub Issues
- ๐ Docs: Documentation
Tadaima - Find your home across Europe ๐ โจ