A sustainable food marketplace connecting businesses with surplus food to conscious consumers
SaSa is a full-stack web application inspired by TooGoodToGo, designed to combat food waste while making healthy food accessible to everyone. The platform enables restaurants, bakeries, supermarkets, farms, and other food businesses to sell surplus inventory at discounted prices before it goes to waste.
- πͺ Business Dashboard: Complete admin interface for managing products, surprise boxes, and business profiles
- π¦ Surprise Boxes: Mystery food packages offering 2x+ value of the purchase price
- πΊοΈ Interactive Map: Real-time geolocation showing nearby businesses with available deals
- π Donation System: Connect businesses with charitable organizations for food donations and certifications
- π Authentication System: Secure user and business account management with cookies-based sessions
- π± Responsive Design: Mobile-first approach with Material-UI components
- πΌοΈ Image Management: AWS S3 integration for efficient media storage
- π€ AI Integration: OpenAI-powered features for enhanced user experience
- React 18.3 with Vite for lightning-fast development
- Material-UI (MUI) for consistent, professional UI components
- React Router for seamless navigation
- Google Maps API for interactive location features
- Axios for HTTP requests
- TailwindCSS + Styled Components for styling flexibility
- React Hot Toast for elegant notifications
- Node.js with Express.js
- AWS DynamoDB with DynamoDB Toolbox for NoSQL data management
- AWS S3 for scalable image storage with presigned URLs
- OpenAI API integration for AI-powered features
- Cookie-based authentication for secure session management
- CORS enabled for frontend-backend communication
- ESLint for code quality
- Nodemon for automatic server restarts
- Vite for optimized frontend bundling
SaSa/
βββ client/ # React frontend application
β βββ src/
β β βββ components/ # Reusable UI components
β β βββ sections/ # Page-level components
β β βββ assets/ # Images, icons, and CSS
β β βββ App.jsx # Main application component
β βββ vite.config.js
β βββ package.json
β
βββ server/ # Node.js backend API
β βββ controllers/ # Business logic handlers
β βββ models/ # DynamoDB data models
β βββ routes/ # API route definitions
β βββ ddbClient.js # DynamoDB configuration
β βββ s3Client.js # AWS S3 configuration
β βββ aiApi.js # OpenAI integration
β βββ index.js # Express server entry point
β βββ package.json
β
βββ README.md
- Node.js (v16 or higher)
- AWS Account with DynamoDB and S3 configured
- Google Maps API key
- OpenAI API key (optional, for AI features)
git clone https://github.com/yourusername/sasa.git
cd sasacd server
npm install
# Create .env file with the following variables:
# AWS_ACCESS_KEY_ID=your_aws_access_key
# AWS_SECRET_ACCESS_KEY=your_aws_secret_key
# AWS_REGION=your_region
# S3_BUCKET_NAME=your_bucket_name
# OPEN_AI_API_KEY=your_openai_key
npm run devcd client
npm install
# Create .env file with:
# VITE_GOOGLE_MAPS_API_KEY=your_google_maps_key
# VITE_API_URL=http://localhost:5000
npm run dev- Frontend:
http://localhost:5173 - Backend API:
http://localhost:5000
- Register & Profile Management: Create business profiles with location, hours, and contact info
- Product Management: Add individual food items with pricing, descriptions, and images
- Surprise Box Creation: Bundle surplus items into mystery packages
- Donation Partnerships: Connect with charitable organizations for tax benefits
- Real-time Inventory: Update availability instantly
- Browse Nearby Deals: Find discounted food on interactive maps
- Search & Filter: Locate specific cuisines, dietary preferences, or business types
- Secure Purchases: Cookie-based authentication for safe transactions
- Personalized Recommendations: AI-powered suggestions based on preferences
- Support Local Businesses: Contribute to sustainability while saving money
The application uses AWS DynamoDB with a single-table design pattern for optimal performance:
- Users Table: Consumer and business account information
- Businesses: Restaurant/store profiles with geolocation data
- Products: Individual food items with pricing and inventory
- Surprise Boxes: Bundled food packages
- Donations: Records of charitable contributions
All images are stored in AWS S3 with presigned URLs for secure access.
- Cookie-based session management with
js-cookie - CORS configuration for controlled API access
- Environment variable protection for sensitive credentials
- AWS IAM roles for service-to-service authentication
- Input validation and sanitization
- Payment gateway integration (Stripe/PayPal)
- Push notifications for new deals
- Advanced analytics dashboard for businesses
- Mobile app (React Native)
- Multi-language support
- Carbon footprint tracking
- Loyalty rewards program
- Social sharing features
This is a portfolio project, but suggestions and feedback are welcome! Feel free to:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Sebastian Salazar
Full-Stack Developer passionate about building apps that helps communities and people.
- πΌ LinkedIn: (www.linkedin.com/in/sebastian-salazar-osorio/)
- π§ Email: sebasalazaro@gmail.com
Valentina Morales
Software Engineer passionate about designing and building end to end full-stack apps.
- πΌ LinkedIn: (https://www.linkedin.com/in/valentina-morales-villada/)
- π§ Email: valentinamoralesvillada13@gmail.com
- Inspired by TooGoodToGo
- Built as part of academic coursework at EAFIT University with
- Special thanks to all contributors and supporters of the project
β If you found this project interesting, please consider giving it a star!
Made with β€οΈ and β»οΈ for a sustainable future
