{"id":30193271,"url":"https://github.com/fernandabitten/financas-pessoais","last_synced_at":"2026-04-29T20:34:24.929Z","repository":{"id":306155579,"uuid":"1025193104","full_name":"Fernandabitten/financas-pessoais","owner":"Fernandabitten","description":"🧠💻🌐 Aplicação full stack para controle de finanças pessoais  🟢 Node.js 🟨 JavaScript 🛣️ Express 📦 express-session 🔐 bcrypt 💾 SQLite3 🧠 Gemini API (Google) 🌐 Render (deploy) 🧱 HTML 🎨 CSS 🎨 Figma ","archived":false,"fork":false,"pushed_at":"2025-08-03T07:09:26.000Z","size":212,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-11T05:08:00.380Z","etag":null,"topics":["bcrypt","css3","express","express-session","figma","gemini-api","html5","javascipt","node","render","sqlite3"],"latest_commit_sha":null,"homepage":"https://fernandabitten.github.io/financas-pessoais/frontend/login.html","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Fernandabitten.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-23T22:00:06.000Z","updated_at":"2025-08-03T07:09:30.000Z","dependencies_parsed_at":"2025-10-11T05:07:14.183Z","dependency_job_id":"404fecc1-ce45-4dcb-9ae0-73a35187a5d4","html_url":"https://github.com/Fernandabitten/financas-pessoais","commit_stats":null,"previous_names":["fernandabitten/financas-pessoais"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Fernandabitten/financas-pessoais","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fernandabitten%2Ffinancas-pessoais","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fernandabitten%2Ffinancas-pessoais/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fernandabitten%2Ffinancas-pessoais/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fernandabitten%2Ffinancas-pessoais/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Fernandabitten","download_url":"https://codeload.github.com/Fernandabitten/financas-pessoais/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fernandabitten%2Ffinancas-pessoais/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32443563,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T20:22:27.477Z","status":"ssl_error","status_checked_at":"2026-04-29T20:22:26.507Z","response_time":110,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bcrypt","css3","express","express-session","figma","gemini-api","html5","javascipt","node","render","sqlite3"],"created_at":"2025-08-13T01:54:56.249Z","updated_at":"2026-04-29T20:34:24.911Z","avatar_url":"https://github.com/Fernandabitten.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Projeto Finanças Pessoais\n\n![Status](https://img.shields.io/badge/progresso-100%25-green?)\n\n![Figma](https://img.shields.io/badge/Figma-F24E1E?\u0026logo=figma\u0026logoColor=white)\n![HTML5](https://img.shields.io/badge/HTML5-%23E34F26.svg?\u0026logo=html5\u0026logoColor=white)\n![JavaScript](https://img.shields.io/badge/JavaScript-F7DF1E?\u0026logo=javascript\u0026logoColor=000)\n![Vanilla JS](https://img.shields.io/badge/Vanilla%20JS-F0DB4F?\u0026logo=javascript\u0026logoColor=323330)\n![Node.js](https://img.shields.io/badge/Node.js-%2343853D.svg?\u0026logo=node.js\u0026logoColor=white)\n![Express](https://img.shields.io/badge/Express.js-000?\u0026logo=express\u0026logoColor=white)\n![express-session](https://img.shields.io/badge/express--session-ff69b4?)\n![bcrypt](https://img.shields.io/badge/bcrypt-4B8BBE?)\n![PostgreSQL](https://img.shields.io/badge/PostgreSQL-316192?logo=postgresql\u0026logoColor=white)\n![Aiven](https://img.shields.io/badge/Aiven-cloud?logo=aiven\u0026logoColor=white\u0026color=E40046)\n![Render](https://img.shields.io/badge/Render-46E3B7?\u0026logo=render\u0026logoColor=000)\n![Gemini 2.0 Flash](https://img.shields.io/badge/Gemini%202.0%20Flash-4285F4?\u0026logo=google\u0026logoColor=white)\n\n👉 [Acesse o deploy aqui!!](https://fernandabitten.github.io/financas-pessoais/frontend/login.html)\n\n## Sobre o projeto\n\nAplicação full stack para controle de finanças pessoais, permitindo cadastro de usuários, autenticação segura por sessão, lançamentos financeiros, relatórios dinâmicos, exportação de dados e análise automática via inteligência artificial. Inclui modo escuro/claro, edição de perfil e acompanha protótipo original no Figma.\n\nEste projeto foi desenvolvido como **Projeto Final** da disciplina **Desenvolvimento Web II** do **IFCE**, cujo objetivo é aplicar na prática os conceitos de **requisições HTTP** e **APIs RESTful**, utilizando os métodos **GET**, **POST**, **PUT** e **DELETE** para manipular recursos via uma interface web. **Persistencia dos dados com SQLite, Node.js, autenticação, controle de Sessões e Proteção de Rotas, utilizando bcrypt e express-session**\n\n## Tecnologias Utilizadas\n\n- **Frontend**:\n  HTML5,\n  CSS3,\n  JavaScript (Vanilla),\n  Chart.js,\n- **Backend**:\n  Node.js,\n  Express.js,\n  PostgreSQL (Aiven),\n  bcrypt (hash de senhas),\n  express-session (gerenciamento de sessões),\n  dotenv (variáveis de ambiente)\n- **Hospedagem**:\n  - Frontend: GitHub Pages\n  - Backend: Render\n  - Banco de dados: Aiven (PostgreSQL)\n\n---\n\n## Funcionalidades\n\n- ### Cadastro, edição e autenticação de usuários\n\n  - Registro com nome, email e senha (senhas criptografadas)\n  - Gerenciamento de sessões (express-session)\n  - Login seguro e proteção de rotas\n  - Edição de nome e senha\n\n- ## Lançamentos financeiros\n\n  - Cadastrar entradas/saídas com tipo, valor, categoria, descrição, data\n  - Listagem, edição, exclusão e filtros (tipo/categoria/período)\n  - Visualização de totais (entradas, saídas, saldo)\n\n- ## Relatórios dinâmicos e gráficos\n\n  - Listas e totais atualizados em tempo real pelo DOM\n  - Gráficos via Chart.js: pizza por categoria e barras por período\n\n- ## Exportação de dados\n\n  - Download dos lançamentos em formato SVG\n\n- ## Resumo financeiro com IA\n\n  - Geração automática de análise e sugestões financeiras pelo Gemini (Google Generative AI)\n  - Resumo de desempenho, dicas práticas e consolidados em JSON por categoria\n\n- ## Design\n  - Prototipação visual original feita no **Figma** e serve como guia para a implementação das páginas HTML.  \n    Acesse o protótipo interativo clicando no link abaixo:  \n    👉 [Protótipo no Figma](https://www.figma.com/proto/cHjB1mahWFq8FTedooHL8X/Sistema-de-Gest%C3%A3o-Finnanceira-Pessoal?node-id=54-806\u0026p=f\u0026t=O1E4mtFvgd4wAINR-0\u0026scaling=min-zoom\u0026content-scaling=fixed\u0026page-id=48%3A1436\u0026starting-point-node-id=54%3A806)\n    Você deve ter uma conta \u003ca href=\"https://www.figma.com/\"\u003eFigma\u003c/a\u003e para acessá-lo.\n\n---\n\n## Estrutura do projeto\n\n```\nfinancas-pessoais/\n├── backend/\n│   ├── controllers/\n│   │   ├── authController.js               # Lógica de cadastro e login\n│   │   ├── transactionController.js        # Lógica dos lançamentos financeiros\n│   │   └── aiServiceController.js          # Lógica para resumos IA\n│   ├── middleware/\n│   │   └── authMiddleware.js               # Proteção de rotas/sessão\n│   ├── models/\n│   │   └── transaction.js                  # Modelo dos lançamentos\n│   │   ├── userModel.js                    # Modelo dos usuarios\n│   ├── routes/\n│   │   ├── authRoutes.js                   # Rotas de cadastro/login\n│   │   ├── transactionRoutes.js            # Rotas dos lançamentos financeiros\n│   │   └── aiServiceRoutes.js              # Rotas para resumos IA\n│   ├── services/\n│   │   └── aiService.js                    # Serviço de integração IA\n│   ├── db.js                               # Conexão e inicialização do banco\n│   ├── .env                                # Variáveis ambiente\n│   ├── .env.exemplo                        #  Exemplo de variáveis de ambiente necessárias para rodar a aplicação. Preencha com seus próprios valores e renomeie para .env\n│   ├── server.js                           # Inicialização do servidor Node.js\n│   ├── package.json                        # Dependências backend\n│   └── package-lock.json\n├── frontend/\n│   ├── components/                         # Componentes HTML reutilizáveis\n│   │   ├── header.html\n│   │   ├── sidebar.html\n│   │   ├── table.html\n│   │   └── ...                             # Outros componentes HTML reutilizáveis\n│   ├── images/\n│   │   └── ...                             # Imagens e ícones de interface\n│   ├── scripts/\n│   │   ├── index.js                        # Lógica principal: CRUD, filtros, DOM, fetch\n│   │   ├── componente.js           # Carrega e insere HTML dinâmico\n│   │   └── ...                             # Outros scripts específicos\n│   ├── styles/\n│   │   ├── style.css\n│   │   ├── styles-auth.css\n│   │   └── ...                             # Outros CSS (dashboard, temas, etc)\n│   ├── index.html                          # Estrutura principal da aplicação; carrega componentes dinâmicos\n│   ├── login.html                          # Tela de login/cadastro\n│   ├── register.html                       # Tela deCadastro de usuário\n└── └── README.md\no\n```\n\n## Configuração e Execução\n\n1. Clone o repositório\n\n```\ngit clone https://github.com/Fernandabitten/financas-pessoais.git\ncd financas-pessoais\n```\n\n2. Configuração backend\n\n- Crie o arquivo .env no backend e preencha:\n\n```\n  NODE_ENV=development                # Troque para production para produção\n  SESSION_SECRET=sua_chave_secreta    # Segredo utilizado para sessões\n  GEMINI_API_KEY=sua_chave_api_gemini # Chave API Gemini para integração IA\n\n  # Configuração do banco PostgreSQL (Aiven)\n  DB_HOST=sua_url_do_postgresql       # ex: pg-xxxx.aivencloud.com\n  DB_PORT=5432                        # Porta padrão do PostgreSQL (ajuste se diferente)\n  DB_USER=seu_usuario\n  DB_PASSWORD=sua_senha\n  DB_NAME=nome_do_banco\n```\n\n\u003e O backend utiliza PostgreSQL (hospedado na Aiven). Preencha as variáveis acima com os dados do banco fornecidos pela plataforma\n\n3. Instale as dependências do backend\n\n```\n  cd backend\n  npm install\n```\n\n4. Inicie o servidor backend:\n\n```\nnpm start\n```\n\n5. Acesse o frontend:\n\n- Use um servidor local (ex: Live Server do VSCode) para abrir frontend/login.html.\n\n\u003e O backend deve estar rodando para autenticação e operações.\n\n## Como usar:\n\n1. Cadastre-se e faça login.\n2. Registre lançamentos financeiros em contas a pagar e contas a receber.\n3. Utilize filtros para visualizar totais e gráficos.\n4. Baixe seus registro em SVG.\n5. Obtenha resumo e dicas personalizadas via IA\n\n## Links Importantes\n\n- 🔗 Frontend: [Deploy no GitHub Pages](https://fernandabitten.github.io/financas-pessoais/frontend/login.html)\n- 🔗 Backend: [Deploy no Render](https://financas-pessoais-eyy5.onrender.com/)\n- 🔗 Protótipo: [Figma](https://www.figma.com/proto/cHjB1mahWFq8FTedooHL8X/Sistema-de-Gest%C3%A3o-Finnanceira-Pessoal?node-id=54-806\u0026p=f\u0026t=O1E4mtFvgd4wAINR-0\u0026scaling=min-zoom\u0026content-scaling=fixed\u0026page-id=48%3A1436\u0026starting-point-node-id=54%3A806)\n\n---\n\n## Galeria de Imagens\n\n\u003cdetails\u003e\n  \u003csummary\u003eVer Screenshots\u003c/summary\u003e\n  \u003cdiv style=\"display: flex; flex-wrap: wrap; gap: 1rem;\"\u003e\n  \u003c/div\u003e\n\u003c/details\u003e\n\n## Licença\n\nEste projeto está licenciado sob a licença MIT.\n\n## Como Contribuir\n\n1. Faça um fork do projeto\n2. Crie uma branch para sua contribuição\n3. Faça commits descritivos e claros\n4. Abra um pull request explicando suas mudanças\n\n#### \"Fique à vontade para adaptar conforme suas necessidades, explorar novas ideias e construir soluções inovadoras!\"\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffernandabitten%2Ffinancas-pessoais","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffernandabitten%2Ffinancas-pessoais","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffernandabitten%2Ffinancas-pessoais/lists"}