Your intelligent plant companion β identify, learn, and care for plants with the power of AI.
Home
Dashboard
Plant Identification
Result
Favourite
Journal
Calendar
π Plant Identification β Upload a photo and identify any plant instantly using the PlantNet API
π Plant Journal β Save and revisit your identified plants with personal notes
π
Care Calendar β Track watering and care schedules with a visual calendar
π Secure Auth β Email verification, bcrypt password hashing, and session management
π± Personalised Dashboard β View your plant collection, favourites, and journal entries in one place
Layer
Technology
Backend
Python 3.14, Flask 3.0
Database
PostgreSQL (via SQLAlchemy + psycopg2)
ORM & Migrations
Flask-SQLAlchemy, Flask-Migrate (Alembic)
AI β Plant Profiles
Google Gemini 2.0 Flash (google-genai)
Plant Identification
PlantNet API
Email
Brevo (Sendinblue) Transactional API
Auth
Flask-Login, Flask-Bcrypt
ML
scikit-learn (model.pkl)
Frontend
Jinja2 Templates, HTML/CSS/JS
Server
Gunicorn
Deployment
Render
Florisha/
β
βββ app.py # App entry point
βββ config.py # Configuration & environment variables
βββ extensions.py # Flask extensions (db, bcrypt, mail)
βββ planet_knowledge.py # Plant domain knowledge base & facts
βββ plant_service.py # Core plant service layer (business logic)
βββ requirements.txt # Python dependencies
βββ runtime.txt # Python version for Render
βββ .python-version # Local Python version
βββ .env # Environment variables (not committed)
βββ .gitignore
β
βββ models/ # SQLAlchemy database models
β βββ __init__.py
β βββ user.py
β βββ plant.py
β βββ journal_entry.py
β βββ calendar_preferences.py
β
βββ routes/ # Flask Blueprints
β βββ __init__.py
β βββ auth_routes.py # Register, login, logout, email verification
β βββ ai_routes.py # Plant identification & AI profile generation
β βββ dashboard.py # User dashboard
β βββ main_routes.py # Home & static pages
β βββ journal_routes.py # Plant journal CRUD
β βββ calendar_routes.py # Care calendar
β
βββ services/ # External API integrations
β βββ gemini_service.py # Google Gemini AI plant profiles
β βββ plant_processor.py # PlantNet identification processing
β
βββ modules/ # AI & recommendation logic
β βββ ai_engine.py
β βββ prompt_engine.py
β βββ recommendation.py
β βββ user_profile.py
β
βββ ml/
β βββ model.pkl # Trained ML model
β
βββ utils/
β βββ image_handler.py # Image upload & processing
β βββ cloudinary_helper.py # Cloudinary cloud image storage helper
β
βββ static/ # CSS, JS, Images
β βββ css/style.css
β βββ js/app.js
β βββ images/
β
βββ templates/ # Jinja2 HTML templates
β βββ index.html
β βββ dashboard.html
β βββ identify.html
β βββ result.html
β βββ chat.html
β βββ login.html
β βββ register.html
β βββ verify_email.html
β βββ forgot_password.html
β βββ reset_password.html
β βββ upload.html
β
βββ migrations/ # Alembic database migrations
β βββ versions/
β βββ alembic.ini
β βββ env.py
β βββ README.md
β βββ script.py.mako
β
βββ data/ # JSON data files
β βββ users.json
β βββ history.json
β
βββ uploads/ # User uploaded plant images
Python 3.11+
PostgreSQL database
Google Gemini API key
PlantNet API key
Brevo (Sendinblue) API key
Clone the repository
git clone https://github.com/asvibes/Florisha.git
cd Florisha
Create a virtual environment
python -m venv venv
source venv/bin/activate # Mac/Linux
venv\S cripts\a ctivate # Windows
Install dependencies
pip install -r requirements.txt
Create a .env file in the root directory:
SECRET_KEY = your-secret-key-here
DATABASE_URL = postgresql://user:password@host:5432/dbname
GEMINI_API_KEY = your-gemini-api-key
PLANTNET_API_KEY = your-plantnet-api-key
BREVO_API_KEY = your-brevo-api-key
MAIL_USERNAME = your-email@gmail.com
Run database migrations
Start the development server
Visit http://localhost:5000 in your browser.
βοΈ Deployment (Render)
Florisha is deployed on Render .
Environment Variables (set in Render dashboard)
Variable
Description
DATABASE_URL
PostgreSQL connection string (auto-set by Render)
SECRET_KEY
Flask secret key for sessions
GEMINI_API_KEY
Google AI Studio API key
PLANTNET_API_KEY
PlantNet identification API key
BREVO_API_KEY
Brevo transactional email API key
User uploads a photo of a plant on the dashboard
PlantNet API identifies the plant species with confidence scores
Results are saved to the user's journal and plant collection
Users can chat with the AI about their plants, set care reminders, and track watering schedules
This project is for educational and personal use.
Built with π by Shreya β @asvibes
Florisha β because every plant deserves to be known. πΏ