A comprehensive web application for tracking produce production and distribution to local food pantries in New Albany, Ohio.
- Admin Panel (
/admin) - Manage produce types, categories, and food pantries - Harvest Interface (
/harvest) - Touch-optimized data entry for volunteers - Dashboard (
/dashboard) - Real-time production statistics and commitment tracking
- Produce Tracking - Record harvest quantities with automatic value calculations
- Pantry Management - Track commitments and delivery progress for local food pantries
- Real-time Updates - Live dashboard updates using Pusher
- Excel Export - Generate detailed reports for analysis and record-keeping
- Touch Optimization - Large buttons and inputs designed for outdoor tablet use
- Admin authentication with Supabase Auth
- Row Level Security (RLS) policies
- Server-side API calls only
- No client-side data storage
- Frontend: Vue 3 (Composition API), TypeScript, Tailwind CSS
- Backend: Supabase (PostgreSQL, Auth, Edge Functions)
- Real-time: Pusher for live updates
- State Management: Pinia
- Export: XLSX for Excel file generation
- Email: Mailgun integration for password resets
- Node.js 18+ and npm
- Supabase account
- Pusher account (optional, for real-time features)
- Mailgun account (optional, for emails)
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env
# Edit .env with your credentials (see below)Update your .env file:
# Supabase Configuration
VITE_SUPABASE_URL=your_supabase_url_here
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key_here
# Pusher Configuration (Optional)
VITE_PUSHER_APP_KEY=your_pusher_app_key_here
VITE_PUSHER_APP_CLUSTER=your_pusher_cluster_here
# Mailgun Configuration (Optional)
VITE_MAILGUN_DOMAIN=your_mailgun_domain
VITE_MAILGUN_API_KEY=your_mailgun_api_key- Create a Supabase project at supabase.com
- Go to SQL Editor in your Supabase dashboard
- Copy and run the entire contents of
database_schema.sql - Follow the detailed setup guide in
supabase-manual-setup.md
# Make setup script executable and run
chmod +x setup-database.sh
./setup-database.sh- Go to Supabase Dashboard β Authentication β Users
- Create a new user with your email/password
- In the user's raw metadata, add:
{ "role": "admin" }
# Development server
npm run dev
# Production build
npm run build
npm run previewsrc/
βββ components/
β βββ admin/ # Admin interface components
β βββ dashboard/ # Dashboard visualizations
β βββ harvest/ # Touch-optimized harvest entry
β βββ shared/ # Shared components
βββ composables/ # Vue composables
βββ lib/ # Configuration (Supabase, Pusher)
βββ stores/ # Pinia state management
βββ utils/ # Utility functions (Excel export, etc.)
βββ views/ # Main application pages
- Login: Visit
/loginwith your admin credentials - Manage Categories: Add vegetable, fruit, herb, and flower categories
- Configure Produce: Set up produce types with pricing information
- Setup Pantries: Add food pantry contacts and annual commitments
- Export Data: Generate Excel reports from the admin panel
- Visit
/harvest- No login required - Select Produce: Choose from visual grid of available produce types
- Enter Quantity: Use large numeric keypad or quick amount buttons
- Add Details: Optional harvester name and notes
- Save Entry: Data is immediately saved and visible on dashboard
- Visit
/dashboard- No login required - View Statistics: See daily, weekly, monthly, and yearly totals
- Track Progress: Monitor food pantry commitment fulfillment
- Recent Activity: See live feed of harvest entries
- Fullscreen Mode: Toggle for large screen TV display
# Development server
npm run dev
# Type checking
npm run type-check
# Linting
npm run lint
# Build for production
npm run build
# Preview production build
npm run preview
# Re-seed database (clears existing data)
curl -X POST https://localhost:8888/api/seed-database \
-H "Content-Type: application/json" \
-d '{"clearData": true}'The system uses 5 main tables:
produce_categories- Vegetable, fruit, herb, flower categoriesproduce_types- Specific items like "Tomatoes" with pricingfood_pantries- Local pantries with contact info and commitmentsharvest_entries- Individual harvest records with quantitiespantry_distributions- Tracking deliveries to pantries
See database_schema.sql for the complete schema with sample data.
npm run build- Netlify - Easy deployment with environment variables
- Vercel - Great Vue.js support with automatic deployments
- Supabase Hosting - Integrated with your database
For TV dashboard displays:
- Deploy to a public URL
- Set browser to fullscreen mode on
/dashboard - Configure auto-refresh (already built-in every 30 seconds)
- Use Chrome kiosk mode for dedicated displays
Authentication Not Working
- Check Supabase URL and keys in
.env - Verify admin user has correct role in metadata
Database Connection Failed
- Confirm Supabase project is active
- Check RLS policies are properly set
Real-time Updates Not Working
- Pusher credentials may be missing or invalid
- Real-time features are optional - app works without them
Excel Export Fails
- Check browser console for errors
- Verify harvest data exists in database
For detailed troubleshooting, see the complete documentation in the project files.
Built with β€οΈ for the New Albany community