Plataforma multiplataforma para gestão de editais, documentos e propostas de organizações sociais e captadores de recursos.
Note
O desenvolvimento está temporariamente pausado enquanto o foco está direcionado a outro produto. O projeto será retomado com uma estratégia open core, mantendo um núcleo público e oferecendo recursos comerciais adicionais.
O Proponente Digital está sendo desenvolvido para centralizar informações que normalmente ficam distribuídas entre planilhas, documentos, mensagens e diferentes plataformas de inscrição.
A plataforma busca apoiar associações, organizações sociais e profissionais de captação de recursos durante todo o ciclo de uma proposta: identificação da oportunidade, organização documental, elaboração do projeto, acompanhamento de prazos e registro do resultado.
Organizações sociais e captadores frequentemente precisam administrar simultaneamente:
- documentos institucionais com diferentes prazos de validade;
- oportunidades publicadas em diversas plataformas;
- propostas em diferentes etapas de elaboração;
- requisitos, anexos e prazos específicos para cada edital;
- informações de várias organizações atendidas;
- histórico de submissões, aprovações e reprovações.
Quando esse processo depende apenas de planilhas, pastas e mensagens, aumenta o risco de perda de informações, documentos vencidos e oportunidades não aproveitadas.
O Proponente Digital reúne esses processos em um único ambiente, permitindo:
- cadastrar e organizar organizações;
- centralizar documentos institucionais;
- registrar editais e oportunidades;
- acompanhar prazos e etapas das propostas;
- compartilhar informações entre aplicações web e desktop;
- manter contratos e regras de negócio tipados entre os diferentes componentes da plataforma.
O projeto já possui:
- API HTTP com autenticação e persistência em PostgreSQL;
- aplicação web para cadastro, autenticação e integração com o desktop;
- aplicação desktop construída com Tauri;
- autenticação integrada entre navegador e aplicativo desktop;
- sistema de atualização automática do aplicativo;
- contratos compartilhados entre as aplicações;
- automação de build e publicação de releases pelo GitHub Actions.
As funcionalidades de gestão de organizações, documentos, oportunidades e propostas continuam em desenvolvimento.
.
|-- apps/
| |-- api/
| |-- desktop/
| `-- web/
|-- packages/
| |-- config/
| `-- contracts/
|-- package.json
|-- pnpm-workspace.yaml
`-- turbo.json| Caminho | Descricao |
|---|---|
apps/api/ |
API HTTP em Fastify com TypeScript, Better Auth, Drizzle ORM e PostgreSQL. |
apps/web/ |
App web publico usado para login, cadastro e retorno do fluxo desktop. |
apps/desktop/ |
App desktop Tauri com Vite, React e TypeScript. |
packages/config/ |
Base para configuracoes compartilhadas do workspace. |
packages/contracts/ |
Pacote para contratos compartilhados entre apps. |
- Node.js >= 22
- pnpm 11.9.0
- Docker e Docker Compose, para o PostgreSQL local da API
- Rust/Tauri toolchain, para os comandos Tauri do app desktop
Instale as dependencias na raiz do monorepo:
pnpm installpnpm devO comando acima e orquestrado pelo Turborepo e executa os scripts dev dos
apps do workspace.
Para rodar apenas um app:
pnpm --filter proponente-api dev
pnpm --filter proponente-desktop dev| Comando | Descricao |
|---|---|
pnpm dev |
Executa os apps em desenvolvimento via Turbo. |
pnpm build |
Executa os builds dos pacotes/apps. |
pnpm check |
Executa typecheck e lint dos pacotes/apps. |
pnpm typecheck |
Executa apenas os typechecks. |
pnpm lint |
Executa os lints do Biome. |
pnpm format |
Executa os formatadores definidos nos pacotes/apps. |
Crie o arquivo .env em apps/api/:
NODE_ENV=development
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/proponente
WEB_PUBLIC_URL=http://localhost:5173
API_PUBLIC_URL=http://localhost:3000
CORS_ALLOWED_ORIGINS=http://localhost:5173
GOOGLE_CLIENT_ID=local-google-client-id
GOOGLE_CLIENT_SECRET=local-google-client-secretVariaveis publicas de build:
| App | Arquivo local sugerido | Variaveis |
|---|---|---|
apps/web |
.env.local |
VITE_API_BASE_URL=http://localhost:3000 |
apps/desktop |
.env.local |
VITE_API_BASE_URL=http://localhost:3000, VITE_WEB_BASE_URL=http://localhost:5173 |
As variaveis VITE_* sao embutidas pelo Vite no momento do build. No bundle
do Tauri elas nao sao lidas do ambiente do usuario final. Em build de producao,
web e desktop falham se as URLs publicas obrigatorias nao estiverem definidas.
O auto-update do Tauri e publicado pelo GitHub Actions, nao pela API. O workflow
.github/workflows/release-desktop.yml compila o app, assina os artefatos,
publica um GitHub Release em draft e envia o latest.json consumido pelo
updater.
Configure estes secrets/variables no GitHub antes de publicar:
| Nome | Tipo | Descricao |
|---|---|---|
TAURI_SIGNING_PRIVATE_KEY |
Secret | Chave privada do updater Tauri. |
TAURI_SIGNING_PRIVATE_KEY_PASSWORD |
Secret | Senha da chave, se existir. |
VITE_API_BASE_URL |
Variable | URL publica da API usada no bundle desktop, como https://api.proponentedigital.com.br. |
VITE_WEB_BASE_URL |
Variable | URL publica do app web usado no login desktop, como https://proponentedigital.com.br. |
Para publicar, crie uma tag desktop-vX.Y.Z alinhada a versao em
apps/desktop/src-tauri/tauri.conf.json. O app desktop consulta:
https://github.com/freitaseric/proponente-platform/releases/latest/download/latest.jsonSuba o PostgreSQL local a partir de apps/api/:
docker compose up -dMais detalhes em apps/api/README.md.
O Proponente Digital deverá evoluir sob um modelo open core:
- uma edição comunitária com código-fonte público;
- funcionalidades essenciais de gestão disponíveis na versão aberta;
- recursos avançados, serviços gerenciados e funcionalidades voltadas a operações maiores na oferta comercial;
- desenvolvimento público e transparente do núcleo compartilhado.
A divisão definitiva entre os recursos comunitários e comerciais ainda será definida antes da retomada do desenvolvimento.
Este projeto usa a licenca Apache 2.0. Veja LICENSE.
