A comprehensive barcode scanning application designed to help parents and caregivers safely manage dietary restrictions for children with cow's milk protein allergies (APLV).
- 📷 Barcode Scanner: Real-time product barcode scanning using camera integration
- ⚡ Instant Results: Get immediate ingredient verification and APLV safety status
- 🔍 Product Search: Browse and search our database of verified products
- 💾 Safe Products List: Save and access a personalized list of approved products
- 📊 Detailed Ingredients: View complete ingredient lists with risk highlighting
- 📱 Mobile First: Fully responsive design optimized for all devices
- 🔒 Privacy First: All data processing respects user privacy
- Frontend: https://safekids-aplv.vercel.app/
- Status: Production Ready ✅
- Node.js 18.17 or higher
- npm or yarn package manager
- Git
- (Optional) Docker for containerized development
npm run dev
npm run build
npm start
This project uses:
- TypeScript for type safety
- ESLint for code quality
- Tailwind CSS for styling
- shadcn/ui for UI components
- Next.js 16.0 - React framework with built-in optimization
- React 19.2 - UI library
- TypeScript 5 - Type safety
- Tailwind CSS 4 - Utility-first CSS framework
- shadcn/ui - High-quality React components
- Lucide React - Beautiful icon library
- @zxing/browser - Barcode scanning
- Express.js - Minimal web framework
- TypeScript - Type safety
- CORS - Cross-origin resource sharing
- Node.js 18+ - JavaScript runtime
- Git & GitHub - Version control
- Vercel - Frontend hosting
- Railway - Backend hosting
- npm - Package management
```bash GET /version ```
Response: ```json { "version": "1.0.0", "status": "ok" } ```
```bash GET /api/products?safe=true ```
Query Parameters:
- `safe` (boolean) - Filter safe products
- `query` (string) - Search by name or brand
Response: ```json [ { "id": 1, "name": "Almond Milk", "brand": "Alpro", "category": "Plant-based Beverage", "isSafe": true } ] ```
```bash GET /api/products/barcode/:barcode ```
Response: ```json { "id": 1, "name": "Almond Milk", "brand": "Alpro", "barcode": "8718345030255", "isSafe": true, "riskyIngredients": [], "allIngredients": ["water", "almonds", "salt"] } ```
```bash POST /api/scan Content-Type: application/json
{ "barcode": "8718345030255" } ```
Response: ```json { "productName": "Almond Milk", "isSafe": true, "riskyIngredients": [], "allIngredients": ["water", "almonds", "salt"] } ```
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create your 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
- Write clear commit messages
- Add comments for complex logic
- Test your changes locally
- Update documentation as needed
- Follow the existing code style
Found a bug? Please create an issue with:
- Clear description of the problem
- Steps to reproduce
- Expected vs actual behavior
- Screenshots if applicable
- Your environment (OS, browser, etc.)
This project is licensed under the MIT License - see the LICENSE file for details.
MissWtson - Full-stack developer in Chile
- Location: Chile 🇨🇱
- Tech Stack: Next.js, React, TypeScript, Express.js
- Next.js Documentation
- shadcn/ui - UI component library
- Tailwind CSS - CSS framework
- ZXing - Barcode scanning library
For questions or support:
- 📧 Email: [elinares235@gmail.com]
SafeKids APLV - Making safe food choices easier for families. ❤️
Last updated: December 2025