Skip to content

DaniloSsoares/ProjetoFullStack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 

Repository files navigation

MyCash - Gestão Financeira Pessoal e Empresarial

MyCash é uma solução FullStack multiplataforma desenvolvida para oferecer controle financeiro completo e acessível. O ecossistema combina um frontend web moderno, um aplicativo mobile nativo (Android) e um backend robusto para gerenciar contas, transações e visualizações gráficas de fluxo de caixa em qualquer lugar.

Tecnologias Utilizadas

Frontend (Web)

  • Framework: React com Next.js (App Router)
  • Linguagem: TypeScript
  • Estilização: Tailwind CSS
  • Ícones: Lucide React
  • Autenticação: Firebase Authentication (Client SDK)

Mobile (Android)

  • Linguagem: Kotlin
  • UI Toolkit: Jetpack Compose (ou XML Views)
  • Networking: Retrofit / OkHttp
  • Injeção de Dependência: Hilt / Kotlin
  • Arquitetura: MVVM (Model-View-ViewModel)

Backend & Dados

  • API: Node.js com Express
  • Arquitetura: MVC (Model-View-Controller) com Services e Repositories.
  • Banco de Dados: Firebase Firestore.
  • Segurança: Middleware de Autenticação via Firebase Admin SDK (Validação de Token Bearer).
  • Sincronização: Lógica automática de criação/atualização de usuários no Firestore (UserService).

Pré-requisitos

Geral

  • Node.js v18+
  • NPM ou Yarn
  • Conta no Firebase (Projeto criado com Firestore e Auth habilitados)

Para o Mobile

  • JDK 11 ou 17
  • Android Studio (Koala ou superior recomendado)
  • Android SDK Configurado

Configuração e Instalação

1. Configuração do Firebase (Frontend Web)

Crie um arquivo Firebase/firebaseConfig Front_end com as chaves do seu projeto Firebase:

codeEnv

`import { initializeApp } from "firebase/app"; import { getAuth } from "firebase/auth"; import { getFirestore } from "firebase/firestore"; import { getStorage } from "firebase/storage";

NEXT_PUBLIC_FIREBASE_API_KEY=""
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=""
NEXT_PUBLIC_FIREBASE_PROJECT_ID=""
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=""
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=""
NEXT_PUBLIC_FIREBASE_APP_ID=""

const app = initializeApp(firebaseConfig); export const db = getFirestore(app); export const auth = getAuth(app); export const storage = getStorage(app); `

2. Configuração do Backend

No backend, a autenticação é feita via Firebase Admin SDK. Você precisará das credenciais de conta de serviço (Service Account).

  1. Baixe o JSON da conta de serviço no console do Firebase.
  2. Coloque-o na pasta Back-End/src/firebase/ (ou configure via variáveis de ambiente).
  3. Crie um arquivo .env na raiz do Back-End se necessário para portas ou chaves secretas de sessão.

3. Instalação das Dependências

Frontend (Web):

codeBash

cd Front_end npm install

Backend:

codeBash

cd Back-End npm install

▶️Como Executar

Backend

O servidor rodará a API REST que processa as regras de negócio financeiras.

codeBash

`cd Back-End npm start

O servidor geralmente inicia na porta 3000 ou conforme definido no .env`

Frontend (Web)

codeBash

cd Front_end npm run dev

Mobile (Android)

Abra o projeto na pasta mobile através do Android Studio e clique em "Run" ou execute via terminal:

codeBash

cd mobile ./gradlew installDebug

🔌 Endpoints da API

A API segue padrões REST e utiliza tokens JWT (Firebase ID Token) no cabeçalho Authorization: Bearer .

Autenticação (AuthController)

Método Endpoint Descrição
POST /api/auth/registrar Registra novo usuário no Firebase e cria documento inicial no Firestore.
POST /api/auth/login Valida o token, cria sessão e sincroniza dados do usuário no Firestore (UserService).
POST /api/auth/logout Encerra a sessão do usuário no servidor.

Financeiro (CashController)

Todos os endpoints abaixo exigem autenticação. O uid é extraído automaticamente do token pelo middleware.

Método Endpoint Descrição
POST /api/transacoes Cria uma nova transação (Receita ou Despesa).
GET /api/transacoes Lista todas as transações do usuário logado.
GET /api/financeiro/resumo Retorna o dashboard completo processado pelo FinanceService: 
• Fluxo Semanal (Semanas do mês)
• Total por Categorias
• Últimas 5 transações
• Balanço Mensal (Receitas vs Despesas)

Estrutura de Pastas (Backend)

A estrutura do servidor segue o padrão de separação de responsabilidades:

codeCode

server/ src/ controllers/ # Controladores (AuthController, CashController) - lidam com req/res services/ # Regras de Negócio (FinanceService, UserService, TransactionService) repositories/ # Acesso a Dados (UserRepository) - abstração do Firestore middlewares/ # Interceptadores (authMiddleware) firebase/ # Configuração do Admin SDK (admin.js) routes/ # Definição das rotas da API

Detalhes da Implementação

  • FinanceService: Contém algoritmos para agrupar transações por semana (_calcularFluxoSemanal) e categorias (_calcularCategorias), removendo essa carga de processamento do Frontend/Mobile.
  • Sincronização de Usuário: Ao fazer login, o sistema verifica se o usuário existe na coleção users do Firestore. Se não existir (primeiro acesso via Google/Social), ele é criado automaticamente.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors