{"id":37315437,"url":"https://github.com/gitayam/short_term_land_lord","last_synced_at":"2026-03-05T07:12:05.344Z","repository":{"id":289010581,"uuid":"957342934","full_name":"gitayam/short_term_land_lord","owner":"gitayam","description":null,"archived":false,"fork":false,"pushed_at":"2025-11-05T03:21:41.000Z","size":4365,"stargazers_count":1,"open_issues_count":24,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-05T04:12:46.281Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gitayam.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY_PLAN.md","support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-03-30T05:50:06.000Z","updated_at":"2025-10-08T06:38:23.000Z","dependencies_parsed_at":"2025-04-21T03:33:06.028Z","dependency_job_id":"a0477189-73c7-48d9-8775-b2b957077111","html_url":"https://github.com/gitayam/short_term_land_lord","commit_stats":null,"previous_names":["gitayam/short_term_land_lord"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/gitayam/short_term_land_lord","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gitayam%2Fshort_term_land_lord","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gitayam%2Fshort_term_land_lord/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gitayam%2Fshort_term_land_lord/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gitayam%2Fshort_term_land_lord/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gitayam","download_url":"https://codeload.github.com/gitayam/short_term_land_lord/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gitayam%2Fshort_term_land_lord/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28476877,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T03:02:43.018Z","status":"ssl_error","status_checked_at":"2026-01-16T03:01:27.857Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-16T03:08:58.944Z","updated_at":"2026-01-16T03:08:58.991Z","avatar_url":"https://github.com/gitayam.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Short Term Land Lord\n\nA comprehensive property management system designed specifically for short-term rental properties. This platform streamlines the coordination between property owners, cleaners, and maintenance staff while providing enhanced calendar integration with popular booking platforms like Airbnb and VRBO.\n\n**🚀 Production Deployment**: Currently deployed on Google App Engine at [https://short-term-landlord-dot-speech-memorization.uc.r.appspot.com](https://short-term-landlord-dot-speech-memorization.uc.r.appspot.com)\n\n## Features\n![main-page](docs/media/main-page.png)\n\n\n- **Calendar Management**: Import and sync calendar events from Airbnb, VRBO, and other booking platforms\n- **Property Management**: Track property details, amenities, and access information\n- **Task Management**: Assign and track cleaning and maintenance tasks\n- **User Role System**: Different interfaces and permissions for property owners, cleaners, and maintenance staff\n- **Inventory Management**: Track supplies and assets for each property\n- **Cleaning Sessions**: Document cleaning with before/after videos and photos\n- **Maintenance Requests**: Report and track maintenance issues\n- **Guest Access Portal**: Provide information to guests with customizable access\n- **Guest Account System**: Invitation-based guest accounts with booking history and direct booking capabilities\n\n![property-edit](docs/media/property-edit.png)\n\n## Production Features ⭐\n\n### Deployed Infrastructure\n- **Google App Engine**: Serverless deployment with auto-scaling\n- **Redis Caching**: 80-90% faster dashboard response times\n- **Google Cloud Secret Manager**: Secure credential management\n- **Health Monitoring**: Comprehensive system health checks and error tracking\n- **Production Security**: Input validation, XSS prevention, CSRF protection\n\n### Performance Optimizations\n- **Database Connection Pooling**: Stable performance under load\n- **Intelligent Caching**: User dashboard data (10min), property stats (30min), task summaries (15min)\n- **Slow Query Detection**: Automatic detection and logging of queries \u003e500ms\n- **Error Tracking**: Real-time issue detection and monitoring\n\n## Development Setup\n\n### Prerequisites\n\n- Git\n- Docker and Docker Compose (recommended)\n- If not using Docker, you will need Python 3.9+ and PostgreSQL\n- For production deployment: Google Cloud SDK\n\n### Docker Setup (Recommended)\n\n1. Clone the repository:\n   ```bash\n   git clone https://github.com/gitayam/short_term_land_lord.git\n   cd short_term_land_lord\n   ```\n\n2. Copy the example environment file:\n   ```bash\n   cp .env.example .env\n   nano .env\n   ```\n\n3. Configure your environment variables in `.env`:\n   ```\n   FLASK_APP=app.py\n   FLASK_ENV=development\n   DATABASE_URL=postgresql://postgres:postgres@db:5432/stll_db\n   SECRET_KEY=your_secret_key\n   ```\n\n4. Build and start the containers:\n   ```bash\n   docker-compose up -d --build\n   ```\n\n5. Access the application at http://localhost:5001\n\n### Local Installation (Alternative)\n\n1. Clone the repository and create a virtual environment:\n   ```bash\n   git clone https://github.com/gitayam/short_term_land_lord.git\n   cd short_term_land_lord\n   python3 -m venv venv\n   source venv/bin/activate  # On Windows: venv\\Scripts\\activate\n   ```\n\n2. Install dependencies:\n   ```bash\n   pip install -r requirements.txt\n   ```\n\n3. Configure your environment (see Docker setup step 2-3)\n\n4. Initialize the database:\n   ```bash\n   flask db upgrade\n   ```\n\n5. Run the application:\n   ```bash\n   flask run\n   ```\n\n## Production Deployment 🚀\n\n### Google App Engine Deployment\n\nThe application is configured for deployment to Google App Engine as a separate service.\n\n1. **Setup Google Cloud SDK**:\n   ```bash\n   gcloud auth login\n   gcloud config set project your-project-id\n   ```\n\n2. **Configure Secrets**:\n   ```bash\n   # Store application secrets in Google Cloud Secret Manager\n   gcloud secrets create landlord-app-secrets --data-file=secrets.json\n   ```\n\n3. **Deploy to App Engine**:\n   ```bash\n   gcloud app deploy app_simple.yaml --project=your-project --version=production\n   ```\n\n### Production Configuration\n\nThe application uses different configurations for production:\n\n- **Database**: SQLite with startup initialization (ephemeral but auto-recreating)\n- **Caching**: Redis-based caching for performance\n- **Sessions**: Secure session management\n- **Logging**: Structured JSON logging with request correlation\n- **Monitoring**: Health checks available at `/health` endpoint\n\n### Debug Features\n\nFor troubleshooting production issues:\n\n- `/debug-admin`: Check admin user status and password validation\n- `/recreate-admin`: Force recreate admin user if needed\n- Structured logging for error tracking\n\n## Development Workflow\n\n### Database Management\n\nThe application uses PostgreSQL and follows these practices:\n\n- Development environment uses Docker volumes for persistence\n- Database can be reset using: `docker-compose down --volumes \u0026\u0026 docker-compose up -d`\n- Migrations are stored in the `migrations/` directory\n- New migrations can be created with: `flask db migrate -m \"Description\"`\n- Apply migrations with: `flask db upgrade`\n\n### Running Tests\n\n```bash\n# Ensure your virtual environment is activated\npython3 -m pytest tests/\n```\n\n### Project Structure\n\n```\n.\n├── app/                    # Main application package\n│   ├── models/            # Database models\n│   ├── templates/         # Jinja2 templates\n│   ├── static/           # Static assets\n│   └── views/            # Route handlers\n├── migrations/            # Database migrations\n├── tests/                # Test suite\n├── docs/                 # Documentation\n├── docker-compose.yml    # Docker services configuration\n├── Dockerfile           # Application container definition\n└── requirements.txt     # Python dependencies\n```\n\n## Calendar Integration\n\nThe system supports calendar integration with various booking platforms. For detailed setup instructions, see [README_CALENDARS.md](README_CALENDARS.md).\n\nKey features include:\n- Multi-platform calendar sync (Airbnb, VRBO, Booking.com)\n- Automated synchronization\n- Visual booking management\n- Platform-specific color coding\n\n## User Guides\n\n### Property Owner\n\nAs a property owner, you can:\n\n- **Dashboard**: View an overview of all properties, upcoming bookings, and pending tasks\n- **Property Management**: Add and edit property details, amenities, and access information\n- **Calendar**: Import and view bookings from various platforms (Airbnb, VRBO, etc.)\n- **Tasks**: Create cleaning and maintenance tasks, assign them to staff\n- **Inventory**: Track supplies and assets for each property\n- **Reports**: View cleaning session reports and maintenance history\n- **Guest Access**: Configure guest access portal with property-specific information\n\n### Cleaner\n\nAs a cleaner, you can:\n\n- **Dashboard**: View your upcoming cleaning assignments\n- **Cleaning Sessions**: Start/end cleaning sessions with before/after documentation\n- **Checklists**: Follow property-specific cleaning checklists\n- **Inventory**: Report low inventory items\n- **Issues**: Report maintenance issues discovered during cleaning\n- **History**: View your completed cleaning sessions and feedback\n\n### Maintenance Staff\n\nAs maintenance staff, you can:\n\n- **Dashboard**: View maintenance requests assigned to you\n- **Requests**: Accept, update, and complete maintenance requests\n- **Documentation**: Upload photos of repairs and maintenance work\n- **Tasks**: View recurring maintenance tasks assigned to you\n- **History**: Track your completed maintenance tasks\n\n### Guest Access \u0026 Account System\n\n#### Public Access (No Account Required)\n- **Browse Properties**: Explore available properties with photos and descriptions\n- **Property Information**: View basic property details, amenities, and location information\n- **Contact Forms**: Submit inquiries about properties\n\n#### Guest Accounts (Invitation-Based)\nGuests can create accounts using invitation codes provided by property hosts:\n\n- **Account Creation**: Register using unique invitation codes (5-24 characters)\n- **Booking History**: View past and upcoming stays across all properties\n- **Direct Booking**: Book directly and save on platform fees (coming soon)\n- **Property Access**: Detailed information including exact addresses and WiFi passwords\n- **Personalized Dashboard**: Manage profile, preferences, and booking history\n- **Local Guides**: Access curated local recommendations and property guides\n\n#### Traditional Guest Access (Property-Specific Links)\nGuests with a property-specific access link can:\n\n- View property details and photos\n- Access check-in and check-out instructions\n- Find WiFi information\n- View house rules and emergency contacts\n- Discover local attractions and recommendations\n\n**Getting Started**: See our [Guest Guide](docs/guest_guide.md) for detailed instructions on creating an account and using guest features.\n\n## System Architecture 🏗️\n\n### Production Stack\n- **Frontend**: Jinja2 templates with Bootstrap 5 and FullCalendar v6\n- **Backend**: Flask with Blueprint architecture\n- **Database**: SQLAlchemy ORM with SQLite (development) / PostgreSQL (production ready)\n- **Caching**: Redis with Flask-Caching\n- **Authentication**: Flask-Login with role-based access control\n- **Security**: Marshmallow validation, bleach sanitization, CSRF protection\n- **Deployment**: Google App Engine with Cloud Secret Manager\n\n### Key Design Patterns\n- **Application Factory Pattern**: Clean configuration management\n- **Blueprint Architecture**: Modular route organization\n- **Repository Pattern**: Database abstraction layer\n- **Decorator Pattern**: Caching and validation decorators\n- **Observer Pattern**: Event-driven task notifications\n\n## Documentation 📚\n\n- **[Lessons Learned](Lessons_Learned.md)**: Deployment insights and technical decisions\n- **[Phase 1 Implementation](PHASE_1_IMPLEMENTATION_SUMMARY.md)**: Production infrastructure details\n- **[Calendar Integration](README_CALENDARS.md)**: Multi-platform booking sync setup\n- **[Guest System Guide](docs/guest_guide.md)**: Comprehensive guide for guests using the account system\n- **[Guest API Documentation](docs/API_GUEST_ACCESS.md)**: Technical API documentation for guest access features\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch: `git checkout -b feature-name`\n3. Commit your changes: `git commit -m 'Add some feature'`\n4. Push to the branch: `git push origin feature-name`\n5. Submit a pull request\n\n## License\n\nThis project is licensed under the MIT License - see the LICENSE file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgitayam%2Fshort_term_land_lord","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgitayam%2Fshort_term_land_lord","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgitayam%2Fshort_term_land_lord/lists"}