A local proposal generator for conservation and natural resource projects
Project description
Propongo 2
A local proposal generator for conservation and natural resource projects. Create professional proposals with scope of work, budgets, qualifications, timelines, and export to PDF or HTML.
Features
- Scope of Work - Define project summary, tasks, and deliverables
- Budget - Line-item budgeting with cost/unit calculations and totals
- Qualifications - Document team background and relevant experience
- Timeline - Set lead times and durations per task with Gantt chart visualization
- Preview - View the complete proposal before exporting
- PDF Export - Clean, professional PDF output via WeasyPrint
- HTML Export - Standalone HTML file with embedded styles
- Snippet Library - Reusable markdown components for organization descriptions, deliverable templates, and custom content
- Save/Load - Proposals stored as JSON files on disk, no database required
Quick Start
Install from PyPI
pip install propongo2
Run
propongo2
Opens at http://localhost:5000
Install from source
git clone https://github.com/VRConservation/propongo2.git
cd propongo2
pip install -e .
propongo2
Development setup
git clone https://github.com/VRConservation/propongo2.git
cd propongo2
pip install -e ".[dev]"
python run.py
Usage
Creating a Proposal
-
Click New Proposal from the dashboard
-
Enter a title and optional client name in the header
-
Work through each tab:
Scope - Add a project summary, then create tasks/deliverables with descriptions
Budget - Select a task, enter line items with cost per unit and quantities. Totals calculate automatically.
Qualifications - Describe your organization's background and why you're qualified for this project
Timeline - Set project start date, configure lead times and durations per task, then view the Gantt chart
Preview - Review the complete proposal before exporting
Using Snippets
Click the sidebar icon (☰) to open the snippet library:
- Organization - Pre-written organization descriptions
- Deliverables - Templates for common deliverable types (surveys, assessments, plans)
- Custom - Create and save your own reusable snippets
Click a snippet to insert it at the cursor position in any text field.
Exporting
- PDF - Click "Export PDF" to generate a clean, professional PDF document
- HTML - Click "Export HTML" to download a standalone HTML file
- Print - Use Ctrl+P / Cmd+P in the Preview tab for browser printing
Managing Proposals
- Proposals auto-save as you work
- Click "Proposals" in the header to see all saved proposals
- Create, edit, or delete proposals from the dashboard
Updating
From PyPI
pip install --upgrade propongo2
From source
cd propongo2
git pull
pip install -e .
Development
Run tests
pytest
Bump version
bump2version patch # 0.1.0 -> 0.1.1
bump2version minor # 0.1.1 -> 0.2.0
bump2version major # 0.2.0 -> 1.0.0
Publish to PyPI
python -m build
twine upload dist/*
Project Structure
propongo2/
├── run.py # Dev entry point
├── pyproject.toml # Package config
├── requirements.txt # Dependencies
├── app/
│ ├── __init__.py # Version
│ ├── main.py # Flask app + routes
│ ├── models.py # Proposal data model
│ ├── export.py # PDF/HTML export
│ ├── snippets.py # Snippet management
│ ├── templates/ # Jinja2 templates
│ │ ├── base.html # Layout + HTMX
│ │ ├── index.html # Proposal dashboard
│ │ ├── scope.html # Scope editor
│ │ ├── budget.html # Budget editor
│ │ ├── qualifications.html # Qualifications editor
│ │ ├── timeline.html # Timeline + Gantt
│ │ ├── preview.html # Proposal preview
│ │ └── export_proposal.html# PDF export template
│ ├── static/
│ │ ├── css/style.css # All styles
│ │ └── js/
│ │ ├── app.js # Core JS + HTMX helpers
│ │ ├── budget.js # Budget calculations
│ │ ├── gantt.js # Gantt chart rendering
│ │ └── snippets.js # Snippet panel logic
│ ├── snippets/ # Stock snippet data
│ │ ├── organization.json
│ │ ├── deliverables.json
│ │ └── custom/ # User-created snippets
│ └── data/
│ └── proposals/ # Saved proposals (JSON)
└── tests/
├── test_main.py
└── test_export.py
Tech Stack
- Backend: Python, Flask
- Frontend: HTMX, Jinja2, vanilla CSS/JS
- PDF Export: WeasyPrint
- Packaging: pyproject.toml, setuptools
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file propongo2-0.1.2.tar.gz.
File metadata
- Download URL: propongo2-0.1.2.tar.gz
- Upload date:
- Size: 12.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d340eadf9d05f6ad7dcfa9111c5b9ece4cf35cde36d972f77bf3a136ef616b87
|
|
| MD5 |
2e7009515c07e2a15143d98c9679e5f4
|
|
| BLAKE2b-256 |
d733b1c2b125d5b9aadcd9ffe98bf1c2e0e342236d1d7b9fcf21d0831594470b
|
File details
Details for the file propongo2-0.1.2-py3-none-any.whl.
File metadata
- Download URL: propongo2-0.1.2-py3-none-any.whl
- Upload date:
- Size: 10.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b9a6c0324ab0a1f3785c14b49030795d2dffe60a751069b6b9dbf10aadfa0a75
|
|
| MD5 |
fe5643b57b4ba8cde5f5c123e0bef71c
|
|
| BLAKE2b-256 |
56d19cf09b9bc76f4b22980237c15daac9cb1723144d8817f4dfc66752061f98
|