A comprehensive full-stack web application for cannabis dispensary inventory and point-of-sale management, utilizing PureScript for frontend development with Haskell backend services, all underpinned by a PostgreSQL database infrastructure.
Detailed documentation for each component of the system:
- Nix Development Environment - Setup and configuration of the Nix-based development environment
- Backend Documentation - Haskell backend API and database implementation
- Frontend Documentation - PureScript frontend application
- Dependencies - List of dependencies
- To Do list - List of future features and optimizations
- Security Recommendations - Detailed upgrades planned for security and authentication.
- Comprehensive Inventory Management: Track cannabis products with detailed strain information
- Type-Safe API: Fully type-checked communication between frontend and backend
- Responsive UI: Modern user interface built with PureScript and Deku
- PostgreSQL Database: Robust data storage with relationship modeling
- Multiple Deployment Options: Configure for online or kiosk mode
- Flexible Sorting & Filtering: Advanced inventory organization capabilities
- CRUD Operations: Complete support for creating, reading, updating, and deleting inventory items
- PureScript: Strongly-typed functional programming language that compiles to JavaScript
- Deku: Declarative UI library for PureScript with hooks-like functionality
- FRP: Functional Reactive Programming for state management
- Haskell: Pure functional programming language for robust backend services
- Servant: Type-level web API library for defining type-safe endpoints
- PostgreSQL: Advanced open-source relational database
- Nix: Reproducible development environment with all dependencies
- Cabal: Haskell build system
- Spago: PureScript package manager and build tool
- Nix package manager with flakes enabled
- Clone the repository:
git clone <repository-url> cd cheeblr nix develop deploy
This will launch the entire setup (PostgreSQL NixOS systemd service and all).
The system currently has:
- A complete inventory management interface
- Backend API for CRUD operations on inventory items
- PostgreSQL database integration
- Type-safe communication between frontend and backend
- Detailed strain and product information tracking
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.