awslabs / awslabs/amazon-dynamodb-tools
Consider revamping to a command-oriented folder structure
- Dominant language
- Python
- Stars
- 181
- Forks
- 50
- Avg merge
- 4h 11m
- Merged PRs (30d)
- 36
Description
Right now commands live in a folder structure like this:
client/src/python_modules/CMDNAME
server/src/python_modules/CMDNAME
When you write a new command you put things in two places. But increasingly we want more things about each command: tests, documentation, AI skill definitions, etc.
Perhaps we should think about:
commands/CMDNAME/client/...
commands/CMDNAME/server/...
commands/CMDNAME/test
commands/CMDNAME/README.md
commands/CMDNAME/SKILL.md
Then "installation" of a new command is just putting a new folder in the right place.
The bootstrap logic would have to make the right zip based on a wildcard commands/*/server/* but that's doable.
Maybe also have a shared system where things like the rate limiter would go, divided into server-side deployed or client-side executed?
shared/client/rate-limiter/...
shared/server/rate-limiter/...
We are where we are because we wrote the server side. Then realized we wanted a client-side piece as well. And now I'm wondering where to put command-specific docs and unit tests. I've always envisioned each command as its own pluggable playground. Perhaps the folder structure should match this.
Contributor guide
Research direction
Start by mapping the existing client/src/python_modules and server/src/python_modules command locations, then inspect the bootstrap logic that creates the server zip. Compare that structure with the proposed commands/* and shared/* layout. Done means the project has an agreed folder design and a defined migration or implementation plan.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- developer-experience, tooling
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100