[AI] Vacation Planning - Recommendations, Costs, Weather

[AI] Vacation Planning - Recommendations, Costs, Weather

December 23, 2024

Some time ago, I made a Trip Planner Web App, based purely on weather patterns as described here.

[How to] Spin the Python Trip Planner! 📌
git clone https://github.com/JAlcocerT/Py_Trip_Planner && cd ./Py_Trip_Planner

#docker build -t trip_planner .
DOCKER_BUILDKIT=1 docker build --no-cache --progress=plain -t trip_planner .

docker run -d \
  --name tripplanner \
  -p 8051:8050 \
  --restart unless-stopped \
  trip_planner #ghcr.io/jalcocert/py_trip_planner #fossengineer/trip_planner

Or…Use the following docker compose:

version: "2"
services:
  tripplanner:
    image: trip_planner #ghcr.io/jalcocert/py_trip_planner #fossengineer/trip_planner
    container_name: tripplanner
    ports:
      - 8051:8050
    restart: unless-stopped

But we need something more to decide where and how to go next.

ℹ️
Related project Source Code - PyVacAItions 💻

THE USE CASE - Plan a Trip To MRK

Py-VacAItions

The project to know where/when to go and IF you can go

PyVacations Project Structure 📌
    • _index.md
      • _index.md
      •   <li class="flex list-none">
            <span class="inline-flex cursor-default items-center py-1"><svg width=1em xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/></svg><span class="ml-1">getting-started.md</span>
            </span>
          </li>
        
        • _index.md
        •     <li class="flex list-none">
                <span class="inline-flex cursor-default items-center py-1"><svg width=1em xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/></svg><span class="ml-1">organize-files.md</span>
                </span>
              </li>
          
            </ul>
          
          </ul>
          
          • _index.md
          •   <li class="flex list-none">
                <span class="inline-flex cursor-default items-center py-1"><svg width=1em xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/></svg><span class="ml-1">post-1.md</span>
                </span>
              </li>
            
            </ul>
            
  • content
    ├── _index.md // <- /
    ├── docs
    │   ├── _index.md // <- /docs/
    │   ├── getting-started.md // <- /docs/getting-started/
    │   └── guide
    │       ├── _index.md // <- /docs/guide/
    │       └── organize-files.md // <- /docs/guide/organize-files/
    └── blog
        ├── _index.md // <- /blog/
        └── post-1.md // <- /blog/post-1/

    Numbeo Data

    Its all about Knowledge of Crowds

    First Knowledge Adquisition (with FireCrawl + openAI) 📌
    python3 firecrawl_test4.py "https://www.numbeo.com/cost-of-living/in/Warsaw" "output4"

    **Comparing 2 cities’ costs with FireCrawl + OpenAI

    python3 Z_FireCrawl_Numbeo_Compare_v6.py "https://www.numbeo.com/cost-of-living/in/Warsaw" "https://www.numbeo.com/cost-of-living/in/Barcelona"

    Weather Analytics

    Pirate Weather 📌

    This is a new addition to the ones used at TripPlanner

    Weather Patterns with MeteoStat 📌
    Weather Forecasts with OpenMeteo 📌
    ℹ️
    It enhances the python trip planner - with weather, described here

    Cost of Living Data

    Interactivity & Maps with Streamlit

    This is a really cool new feature from Streamlit.

    The Agents

    Its been a while since I got to know about CrewAI

    Not its time to do something with it

    Adding memory to the AI to know your preferences


    FAQ

    How to’s about SQLite

    SQLite is a very handy and portable DB to place some logs.

    Storing in SQLite 📌
    Reading SQLite 📌

    And now, there is even a fork of it

    More about SQLite Fork - libSQL [Optimized for AI] 📌

    SQLite is the most deployed database in history, with over 1 trillion active users. It was developed 25 years ago by Richard Hipp for a US Navy damage control system. This lightweight database is contained in a single 600 KB file, requires no server process, and is an essential part of many modern applications.

    Although SQLite is in the public domain, its development is managed by just three people, with no outside contributions allowed. Despite these limitations, SQLite has become ubiquitous due to its simplicity and reliability.

    In October 2022, a new fork called libSQL was introduced, with a focus on community-controlled development. It retains SQL-like compatibility with SQLite, but introduces new features to address some of SQLite’s limitations.

    Key features of libSQL:

    • One database per user: This approach could improve performance, reduce latency, and enhance security.
    • Server mode: Allows access to the database via HTTP.
    • Native replication system: Enables embedded replica features.
    • Encryption at rest: Adds an extra layer of security for data storage.
    • Web Assembly triggers: Lets you run code when specific events occur in the database.
    • Shared schema across multiple databases: Makes it easier to manage databases together.
    • Vector queries: Optimized for AI applications, enabling complex data operations.

    Benefits and Challenges of libSQL:

    • Performance: The one-database-per-user model can significantly boost performance and reduce latency, but it may create challenges with data retrieval and combining data across different locations.
    • Security: Enhanced security through encryption and the isolated nature of individual user databases.
    • However, retrieving and combining data from different databases may not be practical in all cases, especially when data is spread across geographically distant locations.

    In conclusion, libSQL brings significant improvements over SQLite by offering a more flexible, community-driven approach to database management. With its new features and robust capabilities, it has the potential to revolutionize how we build and manage databases, especially for applications requiring high performance, security, and AI integration.

    SQLite may be underappreciated, but with libSQL, it becomes even more powerful and adaptable to modern needs.

    Reading SQLite DBs 📌

    You can explore a SQLite via a script, like we did during the Scrapping Post

    There is a cool project for this - https://github.com/sqlitebrowser/sqlitebrowser

    sqlitebrowser - DB Browser for SQLite (DB4S) is an open-source tool for creating, designing, and editing SQLite database files.

    It simplifies database management for users and developers, eliminating the need for complex SQL commands.

    Key Features:

    • Visual interface resembling a spreadsheet.

    • Allows creation and modification of database files.

    • Supports searching, editing, and deleting database records.

    • Facilitates importing/exporting of data in various formats (CSV, SQL).

    • Offers SQL query capabilities with result inspection.

    • Provides graphical plotting of data.

    Key Information:

    • Continuous and nightly builds are available for download.

    • Compatible with Windows, macOS, Linux, and FreeBSD.

    • Installation options include package managers like Chocolatey, Homebrew, and Snap.

    • The project has a rich history of community contributions and updates.

    Conclusions:

    DB4S is a valuable tool for users needing an intuitive interface for SQLite database management.

    Similar Projects:

    • DBeaver: A universal database tool for developers.

    • HeidiSQL: A lightweight SQL client for MySQL, SQL Server, and PostgreSQL.

    Interesting software for Vacations

    Spliit 📌

    Spliit is a free and open-source alternative to Splitwise, aimed at simplifying expense sharing among friends and family.

    It addresses the need for a user-friendly platform to manage shared expenses without the hassle of ads or fees.

    Key Features:

    • Create and share groups for expense tracking.

    • Add detailed expenses with descriptions.

    • Display balances within groups.

    • Create reimbursement expenses.

    • Progressive Web App (PWA) functionality.

    • Option to split expenses unevenly.

    • Ability to upload images and scan receipts for expenses.

    • Future features may include recurring expenses and import from Splitwise.

    Technology Stack:

    1. Next.js for web application framework.

    2. TailwindCSS for styling.

    3. Prisma for database access.

    4. Vercel for hosting.

    Contribution:

    • Open to community contributions.

    • Options for financial support available.

    Local Development:

    • Clone the repository and set up a local PostgreSQL server.

    • Follow setup instructions to run the application locally or in a Docker container.

    Spliit offers a robust solution for managing shared expenses and simplifies the process for users.

    Similar projects include Tricount and Splitwise itself.

    Using hoppscotch

    HomeAssistant

    With HA we also can…

    https://pirateweather.net/en/latest/ha/

    ℹ️
    After Weather Planning, there is also the financial aspects of travelling. Source Code

    Scrapping and LLMs

    Get Google Flights information with python.