MVP Demo Web - Sem necessidade de login ou backend!
Aplicação completa em Flutter para gerenciar operações de bar: mesas, pedidos, produtos, receitas e produção interna. Todas as dados são armazenadas client-side com persistência automática.
- 📊 Dashboard - KPIs em tempo real (mesas ativas, vendas, estoque baixo)
- 🪑 Gerenciamento de Mesas - Criar, editar, gerenciar status
- 📦 Catálogo de Produtos - Inventário com preço, estoque, categoria
- 🔄 Gerenciamento de Pedidos - Criar pedidos por mesa, marcar preparação
- 📖 Receitas - Definir receitas com ingredientes
- 🏭 Produção Interna - Rastrear produção caseira
- 👥 Fornecedores - Manter contatos de fornecedores
- 💾 Persistência - localStorage - dados persistem entre sessões
- 📱 Responsive - Funciona desktop, tablet e mobile
Provided by Monynha Online
Sem instalação, sem login, pronto para usar!
# Flutter SDK 3.x
flutter --version
# Ou instale:
# https://flutter.dev/docs/get-started/install# Clone repositório
git clone https://github.com/Monynha-Softwares/tree/master/BotecoPro.git
cd BotecoPro
# Baixe dependências
flutter pub get
# Rode em web (default)
flutter run -d web
# Ou compile para produção
flutter build web --release
# Serve build/web em http://localhost:8080
cd build/web && python3 -m http.server 8080flutter run -d web # Development
flutter build web --release # Productionflutter run -d android # Android (requer Android SDK)
flutter build apk --release # Android APK
flutter run -d ios # iOS (macOS only)
flutter build ios --release # iOS Appflutter run -d linux # Linux (requer requisitos)
flutter run -d windows # Windows
flutter run -d macos # macOSlib/
├── main.dart
├── theme.dart
├── core/
│ ├── device/
│ │ ├── app.db
│ │ └── configs.json
│ ├── models/
│ │ └── data_models.dart
│ ├── providers/
│ │ ├── auth_provider.dart
│ │ └── database_provider.dart
│ └── services/
│ ├── auth_service.dart
│ └── database_service.dart
└── presentation/
├── pages/
│ ├── home_page.dart
│ ├── login_page.dart
│ ├── signup_page.dart
│ ├── order_details_page.dart
│ ├── production_page.dart
│ ├── products_page.dart
│ ├── recipes_page.dart
│ ├── suppliers_page.dart
│ └── tables_page.dart
└── widgets/
├── bottom_navigation.dart
└── shared_widgets.dart
web/
├── index.html # Página raiz (SPA)
└── manifest.json # Web app manifest
build/
└── web/ # 📦 Saída de build (~3.8 MB)
├── main.dart.js # Aplicação compilada
├── canvaskit/ # Motore rendu
└── ...
Todos os dados são serializáveis em JSON e persistem em localStorage:
// Exemplos de modelos
enum TableStatus { free, occupied }
enum OrderStatus { pending, preparing, ready, delivered, canceled }
enum ProductCategory { drink, food, other }
class Product {
final String id; // UUID gerado
String name;
ProductCategory category;
double price;
int stockQuantity;
// ...
Map<String, dynamic> toJson() { ... }
factory Product.fromJson(Map<String, dynamic> json) { ... }
}
class Order {
final String id;
String tableId;
List<OrderItem> items;
OrderStatus status;
double get total => items.fold(0, (sum, item) => sum + item.total);
// ...
}- Todas as operações passam por
DatabaseService - Dados convertidos para JSON via
toJson() - Armazenados em
localStoragedo navegador - Recarregado em inicialização via
fromJson() - Persiste entre aba closes e recarga de página
// Exemplo: Salvar produto
final product = Product(name: "Chopp", price: 10.0);
await databaseService.saveProducts([product]);
// localStorage agora contém:
// Key: "products"
// Value: '[{"id":"uuid","name":"Chopp","price":10.0,...}]'
// Recarregar app:
final products = await databaseService.getProducts();
// → Recarrega do localStorage automaticamentelocalStorage: ~50 MB por domínio
MVP Usage: ~400 KB
Margem: 49.6 MB disponíveis ✅
- Cor Primária: Wine
#8B1E3F - Cor Secundária: Mustard
#B3701A - Cores Accent: Beige
#F1DDAD, Brown#4F3222 - Material Design: 3.0 completo
// Mobile: < 800px
├─ Bottom Navigation
└─ Single column
// Desktop: ≥ 800px
├─ Navigation Rail (sidebar)
└─ Multi-column grids| Problema | Solução |
|---|---|
path_provider não compatível web |
✅ Removido |
flutter_secure_storage erro |
✅ Removido |
google_fonts fetch remoto |
✅ Substituído por fonts sistema |
SystemChrome.setPreferredOrientations |
✅ Removido, layout responsivo |
CardTheme type error |
✅ Corrigido para CardThemeData |
# Verificar erros
flutter analyze
# Build web (pré-validação)
flutter build web --release
# Test em navegador
flutter run -d web| Métrica | Valor |
|---|---|
| Build Size | 3.8 MB |
| First Load | ~2-3s |
| Subsequent | ~500ms (cached) |
| Frame Rate | 60 FPS |
| Responsiveness | <50ms |
# Setup (uma vez)
npm install -g firebase-tools
firebase init hosting
# Deploy
firebase deploy
# URL ao vivo: https://botecoproXXXX.web.app📖 Guia Completo: FIREBASE_DEPLOYMENT_GUIDE.md
- Netlify:
netlify deploy --prod --dir=build/web - GitHub Pages: Commit
build/web/paragh-pagesbranch - AWS S3:
aws s3 sync build/web s3://bucket-name/ - VPS/Self-hosted: Nginx/Apache servindo
build/web/
| Documento | Descrição |
|---|---|
| AGENTS.md | Diretrizes para agentes de IA e arquitetura |
| AI_RULES.md | Regras de colaboração e parceiros de componentes |
| FIREBASE_DEPLOYMENT_GUIDE.md | Deploy passo-a-passo Firebase |
| WEB_ARCHITECTURE.md | Arquitetura técnica detalhada |
| DOCUMENTATION_INDEX.md | Índice completo da documentação |
# Análise código
flutter analyze
dart format lib/
# Testes
flutter test
# Clean & rebuild
flutter clean && flutter pub get
# Diagnosticar problemas
flutter doctor -v
# Modo verbose (debug)
flutter run -d web -vclass MyPage extends StatefulWidget {
const MyPage({Key? key}) : super(key: key);
@override
State<MyPage> createState() => _MyPageState();
}
class _MyPageState extends State<MyPage> {
final DatabaseService _db = DatabaseService();
@override
void initState() {
super.initState();
_loadData();
}
Future<void> _loadData() async {
// Carregar dados
if (mounted) {
setState(() {
// Atualizar UI
});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(...);
}
}flutter test test/models_test.dartflutter test integration_test/# Usar webdriver para testar em navegador real- ✅ Sem Backend - Tudo client-side
- ✅ Sem Autenticação - Dados públicos
- ✅ localStorage - Acessível via DevTools
- ✅ Sem HTTPS Obrigatório - Firebase auto-HTTPS
- 🚧 Autenticação (Firebase Auth, OAuth)
- 🚧 Backend API (NodeJS, Python, Go)
- 🚧 Multi-tenant database
- 🚧 Encriptação data (client-side)
- 🚧 Real-time sync (WebSockets)
| Browser | Suporte |
|---|---|
| Chrome/Chromium | ✅ v100+ |
| Firefox | ✅ v100+ |
| Safari | ✅ v14+ |
| Edge | ✅ v100+ |
| Mobile Chrome | ✅ v100+ |
| Mobile Safari | ✅ v14+ |
# Fork & Clone
git clone https://github.com/Monynha-Softwares/BotecoPro.git
# Create branch
git checkout -b feature/amazing-feature
# Commit changes
git commit -m 'Add amazing feature'
# Push
git push origin feature/amazing-feature
# Open Pull RequestMIT License - veja LICENSE
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: hello@monynha.com
- Framework: Flutter 3.x
- Linguagem: Dart
- Platform: Web (HTML5/WebAssembly)
- Persistência: localStorage (IndexedDB)
- UI: Material Design 3
- Localização: Portuguese (Brazil)
- Deployment: Firebase Hosting, Coolify, AWS S3, VPS
- Dependências: flutter_animate, table_calendar, flutter_slidable, flutter_svg, intl, fl_chart, shared_preferences, provider, http, uuid
- Core features (Mesas, Produtos, Pedidos)
- Web MVP pronto
- Client-side persistence
- Responsive design
- Multi-user login
- Backend API
- Real-time sync
- Mobile apps native
- Advanced analytics
- Multi-location support
- Integration com sistemas POS
- Mobile exclusivo UI
┌─────────────────────────────────────┐
│ 🍺 Boteco PRO [Menu] [Config] │
├─────────────────────────────────────┤
│ Bem-vindo! Terça-feira │
│ │
│ ┌─────────────┐ ┌──────────────┐ │
│ │ 3 Mesas │ │ R$ 245.50 │ │
│ │ Ativas │ │ Vendas Hoje │ │
│ └─────────────┘ └──────────────┘ │
│ │
│ 📋 Operações |
│ [Mesas] [Produtos] [Receitas] │
│ [Produção] [Fornecedores] │
│ │
└────────────────────────────────────┘
para gerentes de bar em todo Brasil.
Versão: 1.0.0
Status: ✅ PRODUÇÃO PRONTA
Última Atualização: Outubro 2025
Próxima Milestone: v1.1 com Backend
BotecoPro MVP - Porque gerenciar bar nunca foi tão fácil! 🍻