Skip to content

Commit b1d243c

Browse files
karbassiCopilot
andauthored
Update buildpack (#1509)
* Kiro steering documents * specs * feat: establish baseline for Poetry to uv migration - Analyze current Poetry configuration in pyproject.toml - Document build performance metrics (17.4s total build time) - Verify application functionality with Docker setup - Confirm migration readiness (no conflicting package managers) - Create comprehensive baseline analysis documentation Baseline metrics: - Poetry install: 6.4s - Dependencies install: 9.4s - Application startup: ~3s - HTTP response: 200 OK Ready for uv migration implementation. * feat: migrate Docker configuration from Poetry to uv - Replace Poetry with uv for dependency management in Dockerfile - Install uv instead of Poetry and use `uv sync --frozen` for deps - Remove Poetry-specific environment variables - Add .python-version file for Python 3.11.9 specification - Convert pyproject.toml to uv-compatible format with [project] section - Generate uv.lock to replace poetry.lock - Update .dockerignore to include .python-version - Activate virtual environment in Docker with PATH update Improves build performance with uv's faster dependency resolution and installation (61 packages in 181ms vs Poetry's slower process). Addresses requirements 1.1 and 4.1 for Heroku buildpack migration. * feat: migrate from Poetry to uv for dependency management - Remove Poetry-specific configuration from pyproject.toml - Keep standard PEP 621 project configuration for uv compatibility - Generate new uv.lock file with all dependencies resolved - Remove poetry.lock to ensure uv takes precedence - Maintain Python 3.11.9 specification via .python-version file This migration prepares the project for Heroku's native Python buildpack which has better uv support than Poetry. * feat: verify removal of conflicting package manager files - Confirmed poetry.lock has been removed (replaced by uv.lock) - Verified no requirements.txt files exist in project - Confirmed no Pipfile or Pipfile.lock files present - Ensures uv takes precedence as package manager for Heroku deployment Refs: heroku-buildpack-migration task 4 * test: verify uv dependencies work in Docker environment - Successfully tested uv sync with 61 packages installing in 201ms - Verified Django 5.2.4 application starts with Gunicorn in Docker - Confirmed all database migrations and fixtures load correctly - Validated key dependencies (psycopg 3.2.9, boto3 1.39.13) function properly - Docker build time improved to ~8 seconds with excellent layer caching - All Django management commands working with uv virtual environment Resolves task 5 of heroku-buildpack-migration spec * Remove deprecated Poetry buildpack from Heroku staging - Remove moneymeets/python-poetry-buildpack from staging-wac - Staging now uses native heroku/python buildpack with uv support - Production buildpack removal pending staging validation Refs: heroku-buildpack-migration task 6 * Update app.json to use native Python buildpack with uv support * Add .python-version file for Heroku uv support * Update pyproject.toml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update Dockerfile Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * pin python 3.11 * Update uv.lock file to sync with pyproject.toml dependencies * Update uv.lock file to sync with pyproject.toml dependencies * Cleanup * chore: clean up and organize project configuration files - Reorganize .gitignore with logical sections and remove duplicates - Streamline .dockerignore for better build performance - Group pyproject.toml dependencies by purpose with clear comments - Fix malformed Black and isort tool configurations - Remove redundant patterns and improve maintainability This improves development workflow and ensures consistent tooling across the Django 5.2 + uv + Docker environment. * Update pyproject.toml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
1 parent b1a05b1 commit b1d243c

File tree

12 files changed

+1240
-1629
lines changed

12 files changed

+1240
-1629
lines changed

.dockerignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@
22
!.coveragerc
33
!.env
44
!.pylintrc
5+
!.python-version

.gitignore

Lines changed: 73 additions & 142 deletions
Original file line numberDiff line numberDiff line change
@@ -1,146 +1,93 @@
1-
# sql dump files
2-
*.dump
3-
*.sql
4-
5-
# notes
6-
_notes/*
7-
8-
# Created by https://www.gitignore.io/api/django
9-
# Edit at https://www.gitignore.io/?templates=django
1+
# Python & Django
2+
__pycache__/
3+
*.py[cod]
4+
*$py.class
5+
*.so
106

11-
### Django ###
7+
# Django specific
128
*.log
139
*.pot
1410
*.pyc
15-
__pycache__/
1611
local_settings.py
1712
db.sqlite3
18-
media
19-
20-
# If your build process includes running collectstatic, then you probably don't need or want to include staticfiles/
21-
# in your Git repository. Update and uncomment the following line accordingly.
13+
db.sqlite3-journal
14+
media/
2215
staticfiles/
2316

24-
### Django.Python Stack ###
25-
# Byte-compiled / optimized / DLL files
26-
*.py[cod]
27-
*$py.class
28-
29-
# C extensions
30-
*.so
31-
32-
# Distribution / packaging
33-
.Python
34-
build/
35-
develop-eggs/
36-
dist/
37-
downloads/
38-
eggs/
39-
.eggs/
40-
lib/
41-
lib64/
42-
parts/
43-
sdist/
44-
var/
45-
wheels/
46-
pip-wheel-metadata/
47-
share/python-wheels/
48-
*.egg-info/
49-
.installed.cfg
50-
*.egg
51-
MANIFEST
52-
53-
# PyInstaller
54-
# Usually these files are written by a python script from a template
55-
# before PyInstaller builds the exe, so as to inject date/other infos into it.
56-
*.manifest
57-
*.spec
17+
# Package Management (uv)
18+
.venv/
19+
venv/
20+
env/
21+
ENV/
22+
env.bak/
23+
venv.bak/
5824

59-
# Installer logs
60-
pip-log.txt
61-
pip-delete-this-directory.txt
25+
# Environment & Configuration
26+
.env
27+
.env.local
28+
.env.*.local
6229

63-
# Unit test / coverage reports
30+
# Testing & Coverage
6431
htmlcov/
65-
.tox/
66-
.nox/
6732
.coverage
6833
.coverage.*
69-
.cache
70-
nosetests.xml
7134
coverage.xml
7235
*.cover
7336
.hypothesis/
7437
.pytest_cache/
75-
76-
# Translations
77-
*.mo
78-
79-
# Django stuff:
80-
81-
# Flask stuff:
82-
instance/
83-
.webassets-cache
84-
85-
# Scrapy stuff:
86-
.scrapy
87-
88-
# Sphinx documentation
89-
docs/_build/
90-
91-
# PyBuilder
92-
target/
93-
94-
# Jupyter Notebook
38+
nosetests.xml
39+
test_*.db
40+
41+
# Development Tools
42+
.vscode/
43+
.idea/
44+
*.swp
45+
*.swo
46+
*~
9547
.ipynb_checkpoints
96-
97-
# IPython
98-
profile_default/
99-
ipython_config.py
100-
101-
# pyenv
102-
.python-version
103-
104-
# celery beat schedule file
105-
celerybeat-schedule
106-
107-
# SageMath parsed files
108-
*.sage.py
109-
110-
# Environments
111-
.env
112-
.venv
113-
env/
114-
venv/
115-
ENV/
116-
env.bak/
117-
venv.bak/
118-
119-
# Spyder project settings
120-
.spyderproject
121-
.spyproject
122-
123-
# Rope project settings
124-
.ropeproject
125-
126-
# mkdocs documentation
127-
/site
128-
129-
# mypy
13048
.mypy_cache/
13149
.dmypy.json
13250
dmypy.json
133-
134-
# Pyre type checker
13551
.pyre/
52+
.black
13653

137-
# End of https://www.gitignore.io/api/django
54+
# Build & Distribution
55+
build/
56+
dist/
57+
*.egg-info/
58+
.installed.cfg
59+
*.egg
60+
MANIFEST
13861

139-
# Created by https://www.gitignore.io/api/osx
140-
# Edit at https://www.gitignore.io/?templates=osx
62+
# Docker & Containers
63+
docker-volumes/
14164

142-
### OSX ###
143-
# General
65+
# Databases & Data
66+
*.dump
67+
*.sql
68+
*.db
69+
*.sqlite
70+
*.sqlite3
71+
72+
# Logs & Temporary Files
73+
logs/
74+
tmp/
75+
temp/
76+
.tmp/
77+
78+
# Project Specific
79+
_notes/
80+
notes/
81+
TODO.md
82+
NOTES.md
83+
performance_results/
84+
*.bak
85+
*.backup
86+
87+
# Static Files & Media
88+
static_root/
89+
90+
# macOS
14491
.DS_Store
14592
.AppleDouble
14693
.LSOverride
@@ -167,50 +114,34 @@ Network Trash Folder
167114
Temporary Items
168115
.apdisk
169116

170-
# End of https://www.gitignore.io/api/osx
171-
172-
# Created by https://www.gitignore.io/api/windows
173-
# Edit at https://www.gitignore.io/?templates=windows
174-
175-
### Windows ###
176-
# Windows thumbnail cache files
117+
# Windows
177118
Thumbs.db
178119
ehthumbs.db
179120
ehthumbs_vista.db
180-
181-
# Dump file
182121
*.stackdump
183-
184-
# Folder config file
185122
[Dd]esktop.ini
186-
187-
# Recycle Bin used on file shares
188123
$RECYCLE.BIN/
189-
190-
# Windows Installer files
191124
*.cab
192125
*.msi
193126
*.msix
194127
*.msm
195128
*.msp
196-
197-
# Windows shortcuts
198129
*.lnk
199130

200-
# End of https://www.gitignore.io/api/windows
201-
202-
# Created by https://www.gitignore.io/api/visualstudiocode
203-
# Edit at https://www.gitignore.io/?templates=visualstudiocode
204-
205131
### VisualStudioCode ###
206132
.vscode/*
207133
!.vscode/settings.json
208134
!.vscode/tasks.json
209135
!.vscode/launch.json
210136
!.vscode/extensions.json
137+
!.vscode/*.code-snippets
138+
139+
# Local History for Visual Studio Code
140+
.history/
141+
142+
# Built Visual Studio Code Extensions
143+
*.vsix
211144

212145
### VisualStudioCode Patch ###
213146
# Ignore all local history of files
214147
.history
215-
216-
# End of https://www.gitignore.io/api/visualstudiocode

.kiro/steering/product.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Product Overview
2+
3+
We All Code is a custom Django web application that manages the operations of a coding education nonprofit organization. The platform handles:
4+
5+
## Core Features
6+
7+
- **User Management**: Mentors, guardians, and students with role-based access
8+
- **Session Management**: Coding classes/sessions with enrollment, capacity tracking, and check-in systems
9+
- **Meeting Management**: Mentor meetings and organizational events
10+
- **Course Management**: Different coding courses with age restrictions and duration settings
11+
- **Location Management**: Physical and virtual class locations
12+
- **Donation Tracking**: Financial contributions and receipts
13+
- **Email Communications**: Automated notifications for class announcements, reminders, and confirmations
14+
15+
## User Roles
16+
17+
- **Admin**: Full system access for staff management
18+
- **Mentor**: Volunteers who teach and assist in classes
19+
- **Guardian**: Parents/guardians who register students for classes
20+
- **Student**: Children enrolled in coding classes
21+
22+
## Key Workflows
23+
24+
- Class enrollment and waitlist management
25+
- Mentor assignment and scheduling
26+
- Automated email notifications and reminders
27+
- Check-in systems for classes and meetings
28+
- Partner organization access with password-protected sessions

0 commit comments

Comments
 (0)