πŸš— FEDERAL DRIVER + FEDERAL PRO

Estrutura completa para conectar motoristas e passageiros usando PHP, MySQL e Firebase

🐘 Backend PHP + MySQL ESSENCIAL

πŸ“ Estrutura de Pastas no Servidor

/api/

Endpoints da API

/api/auth/
/api/rides/
/api/users/
/api/payments/

/includes/

Arquivos de configuraΓ§Γ£o

config.php
database.php
firebase.php
auth.php

/websocket/

Servidor WebSocket

server.php
handlers/

/cron/

Jobs agendados

cancel_expired_rides.php
cleanup_location.php

πŸ—„οΈ Banco de Dados MySQL - Estrutura

Tabela DescriΓ§Γ£o Campos Principais
usuarios UsuΓ‘rios (motoristas e passageiros) id, user_id, perfil, nome, email, celular, senha, status, created_at
motoristas Dados especΓ­ficos de motoristas user_id, cnh, crlv, veiculo_placa, veiculo_modelo, avaliacao, online
corridas Registro de todas as corridas id, passageiro_id, motorista_id, origem_lat, origem_lng, destino_lat, destino_lng, status, valor, distancia, created_at
localizacoes LocalizaΓ§Γ£o em tempo real dos motoristas motorista_id, latitude, longitude, heading, speed, updated_at
solicitacoes Pedidos de corrida em aberto id, passageiro_id, origem_lat, origem_lng, destino_lat, destino_lng, status, created_at
avaliacoes AvaliaΓ§Γ΅es motorista/passageiro id, corrida_id, avaliador_id, avaliado_id, nota, comentario, created_at
pagamentos Registro de pagamentos id, corrida_id, passageiro_id, motorista_id, valor, metodo, status, created_at
notificacoes Push notifications id, user_id, titulo, mensagem, lida, created_at
fcm_tokens Tokens de dispositivos id, user_id, token, dispositivo, updated_at
chat_mensagens Mensagens entre motorista e passageiro id, corrida_id, remetente_id, destinatario_id, mensagem, lida, created_at

πŸ“‘ Endpoints da API PHP

πŸ” AutenticaΓ§Γ£o

POST /api/auth/login.php
POST /api/auth/register.php
POST /api/auth/verify-otp.php
POST /api/auth/logout.php
POST /api/auth/forgot-password.php
PHP

πŸš— Motorista

POST /api/driver/online.php
POST /api/driver/update-location.php
POST /api/driver/accept-ride.php
POST /api/driver/start-ride.php
POST /api/driver/end-ride.php
GET /api/driver/history.php
PHP

πŸ‘€ Passageiro

POST /api/passenger/request-ride.php
POST /api/passenger/cancel-ride.php
GET /api/passenger/nearby-drivers.php
GET /api/passenger/ride-status.php
POST /api/passenger/rate-driver.php
PHP

πŸ’³ Pagamentos

POST /api/payments/create.php
POST /api/payments/process.php
GET /api/payments/status.php
POST /api/payments/webhook.php
PHP

πŸ“Š WebSockets (Tempo Real)

ws://api.federalpro.com.br:8080

Eventos:

new_ride_request
driver_accepted
driver_location_update
ride_started
ride_completed
driver_arrived
WebSocket

πŸ”” NotificaΓ§Γ΅es Push

POST /api/notifications/send.php
POST /api/notifications/register-token.php
GET /api/notifications/list.php
POST /api/notifications/mark-read.php
FCM

πŸ”₯ Firebase ESSENCIAL

πŸ“± Firebase Cloud Messaging (FCM)

NotificaΓ§Γ΅es push para motoristas e passageiros

./google-services.json
./GoogleService-Info.plist
FCM

πŸ—„οΈ Firebase Realtime Database

LocalizaΓ§Γ£o em tempo real dos motoristas

/drivers/{driver_id}/location
/rides/{ride_id}/status
Realtime

πŸ“¦ Firebase Storage

Armazenamento de fotos e documentos

/photos/selfies/
/photos/documents/
Storage

πŸ” Firebase Authentication

AutenticaΓ§Γ£o via telefone (opcional)

Phone Auth
Email/Password
Auth

πŸ“„ Arquivo de ConfiguraΓ§Γ£o Firebase

// firebase-config.js
export default {
    apiKey: "AIzaSy...",
    authDomain: "federalpro.firebaseapp.com",
    projectId: "federalpro",
    storageBucket: "federalpro.appspot.com",
    messagingSenderId: "123456789",
    appId: "1:123456789:web:abcdef",
    databaseURL: "https://federalpro-default-rtdb.firebaseio.com/"
};

πŸ—οΈ Arquitetura de ComunicaΓ§Γ£o FLUXO

1️⃣ Passageiro Solicita Corrida

App passageiro β†’ API PHP β†’ WebSocket β†’ App motorista

POST /api/passenger/request-ride.php

2️⃣ Motorista Recebe NotificaΓ§Γ£o

WebSocket β†’ FCM β†’ App motorista

Event: new_ride_request

3️⃣ Motorista Aceita Corrida

App motorista β†’ API PHP β†’ WebSocket β†’ App passageiro

POST /api/driver/accept-ride.php

4️⃣ Motorista Atualiza LocalizaΓ§Γ£o

App motorista β†’ Firebase Realtime Database

/drivers/{id}/location

5️⃣ Passageiro Acompanha a Rota

App passageiro ← Firebase Realtime Database

/drivers/{id}/location

6️⃣ Corrida Finalizada

App motorista β†’ API PHP β†’ WebSocket β†’ App passageiro

POST /api/driver/end-ride.php

7️⃣ Pagamento

App passageiro β†’ API PHP β†’ Gateway

POST /api/payments/process.php

8️⃣ AvaliaΓ§Γ£o

Apps β†’ API PHP

POST /api/passenger/rate-driver.php
POST /api/driver/rate-passenger.php

πŸ“± Estrutura do App (React Native) MOBILE

πŸ“ PΓ‘ginas (Screens)

/screens/auth/LoginScreen.jsx
/screens/auth/RegisterScreen.jsx
/screens/HomeScreen.jsx
/screens/RideScreen.jsx
/screens/HistoryScreen.jsx
/screens/ProfileScreen.jsx
/screens/WalletScreen.jsx

πŸ“ Componentes

/components/Map.jsx
/components/DriverCard.jsx
/components/RideCard.jsx
/components/StatusButton.jsx
/components/Chat.jsx

πŸ“ ServiΓ§os

/services/api.js
/services/websocket.js
/services/firebase.js
/services/location.js
/services/secureStore.js

πŸ“ NavegaΓ§Γ£o

/navigation/AuthNavigator.jsx
/navigation/MainNavigator.jsx
/navigation/RideNavigator.jsx

βœ… Checklist de ImplantaΓ§Γ£o PRIORIDADE

πŸ”΄ Fase 1 - Fundamentos

βœ… Servidor PHP configurado

βœ… Banco MySQL criado

βœ… AutenticaΓ§Γ£o (Login/Register)

βœ… App motorista (mapa + localizaΓ§Γ£o)

🟑 Fase 2 - Conectividade

⬜ Criar app passageiro

⬜ API de solicitação de corrida

⬜ Sistema de notificaçáes (FCM)

⬜ WebSocket para tempo real

🟒 Fase 3 - Funcionalidades

⬜ Sistema de pagamentos

⬜ Avaliação motorista/passageiro

⬜ Chat entre motorista e passageiro

⬜ Histórico de corridas

πŸ”΅ Fase 4 - SeguranΓ§a

⬜ Criptografia de dados

⬜ Verificação de identidade

⬜ Botão de pÒnico

⬜ Compartilhamento de rota

πŸ”„ Fluxo Completo de uma Corrida

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                                                                                 β”‚
β”‚  1. PASSAGEIRO                    2. API PHP                   3. WEB SOCKET    β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”             β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚  β”‚  πŸ“± App Passageiro β”‚ ──────→ β”‚  POST /request  β”‚ ──────→ β”‚  ws://server    β”‚β”‚
β”‚  β”‚  "Quero uma corrida"β”‚             β”‚  Salva no MySQL  β”‚         β”‚  Emite evento   β”‚β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜             β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”‚                                                                                 β”‚
β”‚  4. NOTIFICAÇÃO                  5. MOTORISTA                  6. FIREBASE      β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”             β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚  β”‚  πŸ”” FCM Push      β”‚ ──────→ β”‚  πŸ“± App Motorista β”‚ ──────→ β”‚  Realtime DB    β”‚β”‚
β”‚  β”‚  "Nova corrida..."β”‚             β”‚  "Aceitar corrida"β”‚         β”‚  Atualiza posiΓ§Γ£oβ”‚β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜             β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”‚                                                                                 β”‚
β”‚  7. EM TEMPO REAL                 8. PASSAGEIRO               9. PAGAMENTO      β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”             β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚  β”‚  πŸ“ LocalizaΓ§Γ£o   β”‚ ──────→ β”‚  πŸ“± App Passageiro β”‚ ──────→ β”‚  πŸ’³ Gateway     β”‚β”‚
β”‚  β”‚  do motorista     β”‚             β”‚  Acompanha rota  β”‚         β”‚  "Pagamento OK" β”‚β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜             β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”‚                                                                                 β”‚
β”‚  10. AVALIAÇÃO                   11. HISTΓ“RICO               12. FIM            β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”             β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”β”‚
β”‚  β”‚  ⭐ 5 estrelas   β”‚ ──────→ β”‚  πŸ“Š MySQL        β”‚ ──────→ β”‚  βœ… Corrida     β”‚β”‚
β”‚  β”‚  Motorista avalia β”‚             β”‚  Salva no banco  β”‚         β”‚  Finalizada!    β”‚β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜             β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜β”‚
β”‚                                                                                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜