Casalytics is a web application that allows you to search real estate listings across multiple property websites simultaneously. It uses Next.js for the frontend and Flask for the backend.
- Node.js (v18 or higher)
- Python (v3.8 or higher)
- npm or yarn
- pip (Python package manager)
propfinder/
├── api/ # Backend (Flask)
│ ├── app.py # Main Flask application
│ └── requirements.txt # Python dependencies
├── app/ # Frontend (Next.js)
│ ├── page.tsx # Main page
│ └── globals.css # Global styles
├── lib/ # Shared utilities
│ └── api.ts # API client
└── README.md # This file
-
Navigate to the backend directory:
cd api -
Create and activate a virtual environment:
# On Linux/macOS python -m venv venv source venv/bin/activate # On Windows python -m venv venv .\venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Start the development server:
python app.py
The backend will be available at http://localhost:5000
-
From the project root, install dependencies:
npm install # or yarn install -
Set up environment variables:
# Create a .env.local file echo "NEXT_PUBLIC_API_URL=http://localhost:5000" > .env.local
-
Start the development server:
npm run dev # or yarn dev
The frontend will be available at http://localhost:3000
- 🏠 Search across multiple real estate websites simultaneously
- 📊 Real-time statistics
- 🔍 Natural language search
- 📱 Responsive design
- ⚡ Progressive result loading
Returns general statistics:
- Total properties
- Total real estate agencies
- Searches per day
Performs a property search.
Payload:
{
"query": "apartment for sale in villa urquiza with 3 rooms under 150,000 USD"
}cd api
python -m pytestnpm run test
# or
yarn test- Add the agency to the list in
api/app.py - Implement the corresponding scraper
- Update the tests
- UI components are based on shadcn/ui
- Use Tailwind CSS for styling
- Follow the "use client" pattern for components using hooks
- Fork the repository
- Create a branch for your feature (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License. See the LICENSE file for more details.