Skip to content

mathisto/sprout-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

7 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

๐ŸŒฑ Sprout Server

Sprout Server

Rails Ruby PostgreSQL HTMX Hotwire TailwindCSS

Build Status License Last Commit

A modern, real-time plant monitoring system powered by ESP32 devices and Rails ๐Ÿชด

Features โ€ข Getting Started โ€ข Development โ€ข Deployment โ€ข Contributing

โœจ Features

  • ๐ŸŒฟ Real-time plant moisture monitoring
  • ๐Ÿ“Š Beautiful, interactive charts and visualizations
  • ๐Ÿ”” Instant notifications when plants need attention
  • ๐Ÿ“ฑ Progressive Web App (PWA) support
  • ๐Ÿค– ESP32 device integration
  • ๐Ÿ”„ HTMX-powered dynamic interactions
  • โšก๏ธ WebSocket live updates via Hotwire
  • ๐ŸŽจ Modern, responsive UI with TailwindCSS
  • ๐Ÿงช Comprehensive test suite

๐Ÿš€ Getting Started

Prerequisites

  • Ruby 3.3.0
  • PostgreSQL 14+
  • Node.js 18+
  • Yarn 1.x
  • Redis (optional, for ActionCable in production)

Quick Start

  1. Clone the repository:
git clone https://github.com/mathisto/sprout-server.git
cd sprout-server
  1. Install dependencies:
bundle install
yarn install
  1. Set up your environment:
cp .env.example .env
# Edit .env with your configuration
  1. Set up the database:
rails db:create db:migrate db:seed
  1. Start the development server:
bin/dev

Visit http://localhost:3000 and start monitoring your plants! ๐ŸŒฑ

๐Ÿ’ป Development

Running Tests

bundle exec rspec                 # Run all tests
bundle exec rspec spec/models     # Run specific test directory
bundle exec rspec spec/models/plant_spec.rb  # Run specific test file

Code Quality

bundle exec rubocop              # Ruby style guide
bundle exec brakeman            # Security vulnerabilities
bundle exec bundle audit        # Gem vulnerabilities

Architecture

%%{
  init: {
    'theme': 'base',
    'themeVariables': {
      'primaryColor': '#1a1b26',
      'primaryTextColor': '#a9b1d6',
      'primaryBorderColor': '#7aa2f7',
      'lineColor': '#7aa2f7',
      'secondaryColor': '#24283b',
      'tertiaryColor': '#414868'
    }
  }
}%%
graph TD
    A[ESP32 Device]:::iot -->|HTTP POST| B[Rails API]:::server
    B -->|ActionCable| C[Browser Client]:::client
    B -->|Store| D[(PostgreSQL)]:::db
    
    C -->|HTMX Requests| B
    B -->|HTML Fragments| C
    
    C -->|Turbo Streams| E[Dashboard]:::ui
    C -->|Service Worker| F[PWA Notifications]:::worker

    classDef default fill:#1a1b26,stroke:#7aa2f7,color:#a9b1d6,stroke-width:2px
    classDef iot fill:#2ac3de,stroke:#7dcfff,color:#1a1b26,stroke-width:2px
    classDef server fill:#f7768e,stroke:#ff9e64,color:#1a1b26,stroke-width:2px
    classDef client fill:#9ece6a,stroke:#73daca,color:#1a1b26,stroke-width:2px
    classDef db fill:#bb9af7,stroke:#c0caf5,color:#1a1b26,stroke-width:2px
    classDef ui fill:#e0af68,stroke:#ff9e64,color:#1a1b26,stroke-width:2px
    classDef worker fill:#7aa2f7,stroke:#b4f9f8,color:#1a1b26,stroke-width:2px
Loading

๐Ÿ“ฆ Deployment

This application uses Kamal for deployment:

  1. Set up your deployment configuration:
cp config/deploy.yml.example config/deploy.yml
# Edit deploy.yml with your server configuration
  1. Deploy:
bin/kamal setup
bin/kamal deploy

๐Ÿค Contributing

We love contributions! Please check out our Contributing Guide for guidelines.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -am 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

๐Ÿ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ™ Acknowledgments

  • Ruby on Rails - The web framework that powers everything
  • HTMX - For modern HTML-driven interactivity
  • Hotwire - For making real-time updates a breeze
  • TailwindCSS - For the beautiful UI components
  • Chart.js - For the gorgeous data visualizations
  • All our contributors ๐Ÿ’š

Made with ๐Ÿ’š by Matt Kelly

Theme inspired by Tokyo Night ๐ŸŒƒ

About

A Rails application for managing ESP32-based plant monitoring and automation.

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

โšก