constella 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -0
- package/.next/app-path-routes-manifest.json +53 -0
- package/.next/build-manifest.json +20 -0
- package/.next/diagnostics/build-diagnostics.json +6 -0
- package/.next/diagnostics/framework.json +1 -0
- package/.next/export-marker.json +6 -0
- package/.next/images-manifest.json +68 -0
- package/.next/next-minimal-server.js.nft.json +1 -0
- package/.next/next-server.js.nft.json +1 -0
- package/.next/package.json +1 -0
- package/.next/prerender-manifest.json +36 -0
- package/.next/react-loadable-manifest.json +14 -0
- package/.next/required-server-files.js +343 -0
- package/.next/required-server-files.json +343 -0
- package/.next/routes-manifest.json +362 -0
- package/.next/server/app/(app)/activity/page.js +2 -0
- package/.next/server/app/(app)/activity/page.js.nft.json +1 -0
- package/.next/server/app/(app)/activity/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/agents/[handle]/page.js +18 -0
- package/.next/server/app/(app)/agents/[handle]/page.js.nft.json +1 -0
- package/.next/server/app/(app)/agents/[handle]/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/code/page.js +2 -0
- package/.next/server/app/(app)/code/page.js.nft.json +1 -0
- package/.next/server/app/(app)/code/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/config/page.js +2 -0
- package/.next/server/app/(app)/config/page.js.nft.json +1 -0
- package/.next/server/app/(app)/config/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/costs/page.js +2 -0
- package/.next/server/app/(app)/costs/page.js.nft.json +1 -0
- package/.next/server/app/(app)/costs/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/cron/page.js +2 -0
- package/.next/server/app/(app)/cron/page.js.nft.json +1 -0
- package/.next/server/app/(app)/cron/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/dashboard/page.js +2 -0
- package/.next/server/app/(app)/dashboard/page.js.nft.json +1 -0
- package/.next/server/app/(app)/dashboard/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/docs/[id]/page.js +2 -0
- package/.next/server/app/(app)/docs/[id]/page.js.nft.json +1 -0
- package/.next/server/app/(app)/docs/[id]/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/docs/page.js +2 -0
- package/.next/server/app/(app)/docs/page.js.nft.json +1 -0
- package/.next/server/app/(app)/docs/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/github/page.js +2 -0
- package/.next/server/app/(app)/github/page.js.nft.json +1 -0
- package/.next/server/app/(app)/github/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/goals/page.js +2 -0
- package/.next/server/app/(app)/goals/page.js.nft.json +1 -0
- package/.next/server/app/(app)/goals/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/inbox/page.js +2 -0
- package/.next/server/app/(app)/inbox/page.js.nft.json +1 -0
- package/.next/server/app/(app)/inbox/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/knowledge/page.js +3 -0
- package/.next/server/app/(app)/knowledge/page.js.nft.json +1 -0
- package/.next/server/app/(app)/knowledge/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/models/page.js +2 -0
- package/.next/server/app/(app)/models/page.js.nft.json +1 -0
- package/.next/server/app/(app)/models/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/notifications/page.js +2 -0
- package/.next/server/app/(app)/notifications/page.js.nft.json +1 -0
- package/.next/server/app/(app)/notifications/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/org/page.js +2 -0
- package/.next/server/app/(app)/org/page.js.nft.json +1 -0
- package/.next/server/app/(app)/org/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/organizations/page.js +2 -0
- package/.next/server/app/(app)/organizations/page.js.nft.json +1 -0
- package/.next/server/app/(app)/organizations/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/page.js +3 -0
- package/.next/server/app/(app)/page.js.nft.json +1 -0
- package/.next/server/app/(app)/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/planner/page.js +2 -0
- package/.next/server/app/(app)/planner/page.js.nft.json +1 -0
- package/.next/server/app/(app)/planner/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/plugins/page.js +2 -0
- package/.next/server/app/(app)/plugins/page.js.nft.json +1 -0
- package/.next/server/app/(app)/plugins/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/pm/page.js +2 -0
- package/.next/server/app/(app)/pm/page.js.nft.json +1 -0
- package/.next/server/app/(app)/pm/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/prepare-deploy/page.js +19 -0
- package/.next/server/app/(app)/prepare-deploy/page.js.nft.json +1 -0
- package/.next/server/app/(app)/prepare-deploy/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/profile/page.js +2 -0
- package/.next/server/app/(app)/profile/page.js.nft.json +1 -0
- package/.next/server/app/(app)/profile/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/pulse/page.js +2 -0
- package/.next/server/app/(app)/pulse/page.js.nft.json +1 -0
- package/.next/server/app/(app)/pulse/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/reports/[id]/page.js +3 -0
- package/.next/server/app/(app)/reports/[id]/page.js.nft.json +1 -0
- package/.next/server/app/(app)/reports/[id]/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/reports/page.js +5 -0
- package/.next/server/app/(app)/reports/page.js.nft.json +1 -0
- package/.next/server/app/(app)/reports/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/routines/page.js +2 -0
- package/.next/server/app/(app)/routines/page.js.nft.json +1 -0
- package/.next/server/app/(app)/routines/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/search/page.js +2 -0
- package/.next/server/app/(app)/search/page.js.nft.json +1 -0
- package/.next/server/app/(app)/search/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/security/page.js +2 -0
- package/.next/server/app/(app)/security/page.js.nft.json +1 -0
- package/.next/server/app/(app)/security/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/skills/page.js +18 -0
- package/.next/server/app/(app)/skills/page.js.nft.json +1 -0
- package/.next/server/app/(app)/skills/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/tasks/page.js +2 -0
- package/.next/server/app/(app)/tasks/page.js.nft.json +1 -0
- package/.next/server/app/(app)/tasks/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/test-dev/page.js +2 -0
- package/.next/server/app/(app)/test-dev/page.js.nft.json +1 -0
- package/.next/server/app/(app)/test-dev/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(app)/update/page.js +2 -0
- package/.next/server/app/(app)/update/page.js.nft.json +1 -0
- package/.next/server/app/(app)/update/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(auth)/login/page.js +2 -0
- package/.next/server/app/(auth)/login/page.js.nft.json +1 -0
- package/.next/server/app/(auth)/login/page_client-reference-manifest.js +1 -0
- package/.next/server/app/(auth)/onboarding/page.js +18 -0
- package/.next/server/app/(auth)/onboarding/page.js.nft.json +1 -0
- package/.next/server/app/(auth)/onboarding/page_client-reference-manifest.js +1 -0
- package/.next/server/app/_global-error/page.js +32 -0
- package/.next/server/app/_global-error/page.js.nft.json +1 -0
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -0
- package/.next/server/app/_global-error.html +1 -0
- package/.next/server/app/_global-error.meta +16 -0
- package/.next/server/app/_global-error.rsc +15 -0
- package/.next/server/app/_global-error.segments/_full.segment.rsc +15 -0
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +5 -0
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +5 -0
- package/.next/server/app/_global-error.segments/_head.segment.rsc +5 -0
- package/.next/server/app/_global-error.segments/_index.segment.rsc +6 -0
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
- package/.next/server/app/_not-found/page.js +2 -0
- package/.next/server/app/_not-found/page.js.nft.json +1 -0
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -0
- package/.next/server/app/api/auth/[...all]/route.js +1 -0
- package/.next/server/app/api/auth/[...all]/route.js.nft.json +1 -0
- package/.next/server/app/api/auth/[...all]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/cron/tick/route.js +52 -0
- package/.next/server/app/api/cron/tick/route.js.nft.json +1 -0
- package/.next/server/app/api/cron/tick/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/dev-login/route.js +1 -0
- package/.next/server/app/api/dev-login/route.js.nft.json +1 -0
- package/.next/server/app/api/dev-login/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/locks/acquire/route.js +1 -0
- package/.next/server/app/api/locks/acquire/route.js.nft.json +1 -0
- package/.next/server/app/api/locks/acquire/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/models/progress/route.js +1 -0
- package/.next/server/app/api/models/progress/route.js.nft.json +1 -0
- package/.next/server/app/api/models/progress/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/passkey/authenticate/options/route.js +1 -0
- package/.next/server/app/api/passkey/authenticate/options/route.js.nft.json +1 -0
- package/.next/server/app/api/passkey/authenticate/options/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/passkey/authenticate/verify/route.js +1 -0
- package/.next/server/app/api/passkey/authenticate/verify/route.js.nft.json +1 -0
- package/.next/server/app/api/passkey/authenticate/verify/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/passkey/register/options/route.js +1 -0
- package/.next/server/app/api/passkey/register/options/route.js.nft.json +1 -0
- package/.next/server/app/api/passkey/register/options/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/passkey/register/verify/route.js +1 -0
- package/.next/server/app/api/passkey/register/verify/route.js.nft.json +1 -0
- package/.next/server/app/api/passkey/register/verify/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/stream/route.js +4 -0
- package/.next/server/app/api/stream/route.js.nft.json +1 -0
- package/.next/server/app/api/stream/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/sync/file/route.js +2 -0
- package/.next/server/app/api/sync/file/route.js.nft.json +1 -0
- package/.next/server/app/api/sync/file/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/telegram/poll/route.js +15 -0
- package/.next/server/app/api/telegram/poll/route.js.nft.json +1 -0
- package/.next/server/app/api/telegram/poll/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/upload/route.js +1 -0
- package/.next/server/app/api/upload/route.js.nft.json +1 -0
- package/.next/server/app/api/upload/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/v1/[[...path]]/route.js +1 -0
- package/.next/server/app/api/v1/[[...path]]/route.js.nft.json +1 -0
- package/.next/server/app/api/v1/[[...path]]/route_client-reference-manifest.js +1 -0
- package/.next/server/app-paths-manifest.json +53 -0
- package/.next/server/chunks/1003.js +1 -0
- package/.next/server/chunks/127.js +26 -0
- package/.next/server/chunks/1388.js +1 -0
- package/.next/server/chunks/1408.js +21 -0
- package/.next/server/chunks/1572.js +1 -0
- package/.next/server/chunks/1591.js +24 -0
- package/.next/server/chunks/1619.js +188 -0
- package/.next/server/chunks/162.js +1 -0
- package/.next/server/chunks/1881.js +1 -0
- package/.next/server/chunks/1968.js +1 -0
- package/.next/server/chunks/2297.js +348 -0
- package/.next/server/chunks/2341.js +1 -0
- package/.next/server/chunks/2517.js +1 -0
- package/.next/server/chunks/2549.js +1 -0
- package/.next/server/chunks/259.js +14 -0
- package/.next/server/chunks/2599.js +1 -0
- package/.next/server/chunks/260.js +1 -0
- package/.next/server/chunks/2867.js +147 -0
- package/.next/server/chunks/3018.js +1 -0
- package/.next/server/chunks/3050.js +18 -0
- package/.next/server/chunks/3085.js +12 -0
- package/.next/server/chunks/3131.js +1 -0
- package/.next/server/chunks/3242.js +1 -0
- package/.next/server/chunks/3266.js +15 -0
- package/.next/server/chunks/3524.js +1 -0
- package/.next/server/chunks/3527.js +479 -0
- package/.next/server/chunks/3533.js +869 -0
- package/.next/server/chunks/3550.js +1 -0
- package/.next/server/chunks/3609.js +2 -0
- package/.next/server/chunks/3667.js +462 -0
- package/.next/server/chunks/3760.js +4 -0
- package/.next/server/chunks/4679.js +1 -0
- package/.next/server/chunks/4804.js +1 -0
- package/.next/server/chunks/4832.js +2 -0
- package/.next/server/chunks/4853.js +1 -0
- package/.next/server/chunks/4979.js +67 -0
- package/.next/server/chunks/5060.js +1 -0
- package/.next/server/chunks/5278.js +1 -0
- package/.next/server/chunks/5614.js +1 -0
- package/.next/server/chunks/5818.js +1 -0
- package/.next/server/chunks/6479.js +1 -0
- package/.next/server/chunks/6658.js +1 -0
- package/.next/server/chunks/6706.js +1 -0
- package/.next/server/chunks/6719.js +1 -0
- package/.next/server/chunks/678.js +1 -0
- package/.next/server/chunks/683.js +1 -0
- package/.next/server/chunks/6862.js +1 -0
- package/.next/server/chunks/6882.js +1 -0
- package/.next/server/chunks/7037.js +1 -0
- package/.next/server/chunks/7107.js +741 -0
- package/.next/server/chunks/73.js +17 -0
- package/.next/server/chunks/7327.js +1 -0
- package/.next/server/chunks/7514.js +1 -0
- package/.next/server/chunks/7622.js +1 -0
- package/.next/server/chunks/7778.js +1 -0
- package/.next/server/chunks/7912.js +1 -0
- package/.next/server/chunks/7949.js +1 -0
- package/.next/server/chunks/7971.js +1 -0
- package/.next/server/chunks/7989.js +1 -0
- package/.next/server/chunks/842.js +22 -0
- package/.next/server/chunks/8762.js +15 -0
- package/.next/server/chunks/8823.js +77 -0
- package/.next/server/chunks/9146.js +4 -0
- package/.next/server/chunks/9676.js +1 -0
- package/.next/server/chunks/9783.js +22 -0
- package/.next/server/chunks/9969.js +3 -0
- package/.next/server/functions-config-manifest.json +18 -0
- package/.next/server/instrumentation.js +1 -0
- package/.next/server/instrumentation.js.nft.json +1 -0
- package/.next/server/interception-route-rewrite-manifest.js +1 -0
- package/.next/server/middleware-build-manifest.js +1 -0
- package/.next/server/middleware-manifest.json +6 -0
- package/.next/server/middleware-react-loadable-manifest.js +1 -0
- package/.next/server/middleware.js +18 -0
- package/.next/server/middleware.js.nft.json +1 -0
- package/.next/server/next-font-manifest.js +1 -0
- package/.next/server/next-font-manifest.json +1 -0
- package/.next/server/pages/500.html +1 -0
- package/.next/server/pages-manifest.json +3 -0
- package/.next/server/prefetch-hints.json +1 -0
- package/.next/server/server-reference-manifest.js +1 -0
- package/.next/server/server-reference-manifest.json +1 -0
- package/.next/server/webpack-runtime.js +1 -0
- package/.next/static/chunks/1858-339516f78a4b00da.js +1 -0
- package/.next/static/chunks/2320-fc8b39380e69d465.js +2 -0
- package/.next/static/chunks/23550918-ff694f70f4b0648c.js +1 -0
- package/.next/static/chunks/3219-ebb3c23be38c838d.js +1 -0
- package/.next/static/chunks/4263-adecb5b466380b6e.js +1 -0
- package/.next/static/chunks/5479-0cceab68cd0ca9c7.js +1 -0
- package/.next/static/chunks/5701-665b927b06158b76.js +1 -0
- package/.next/static/chunks/5920.6451a68b63918988.js +1 -0
- package/.next/static/chunks/6575-5c9139720bb0f5bf.js +4 -0
- package/.next/static/chunks/6834-4759af1ce7d95fb6.js +32 -0
- package/.next/static/chunks/7509.721cd47a931c5518.js +1 -0
- package/.next/static/chunks/8264-1ca011989ee2b231.js +1 -0
- package/.next/static/chunks/9219-4a39a98b5502d9d1.js +1 -0
- package/.next/static/chunks/9690-53d5222618cbeddb.js +1 -0
- package/.next/static/chunks/app/(app)/activity/page-3973534281ecea81.js +1 -0
- package/.next/static/chunks/app/(app)/agents/[handle]/page-83662a175c098282.js +1 -0
- package/.next/static/chunks/app/(app)/code/page-33979545192cd137.js +1 -0
- package/.next/static/chunks/app/(app)/config/page-9933aed1ca8a85c1.js +1 -0
- package/.next/static/chunks/app/(app)/costs/page-131c4dc580efcc19.js +1 -0
- package/.next/static/chunks/app/(app)/cron/page-53ea1aff998a87ca.js +1 -0
- package/.next/static/chunks/app/(app)/dashboard/page-deed83aaa9d0d447.js +1 -0
- package/.next/static/chunks/app/(app)/docs/[id]/page-38c993d73c0eab4f.js +1 -0
- package/.next/static/chunks/app/(app)/docs/page-bf463b55d0554e86.js +1 -0
- package/.next/static/chunks/app/(app)/error-988cd28480809861.js +1 -0
- package/.next/static/chunks/app/(app)/github/page-62678b4e82dfecb6.js +1 -0
- package/.next/static/chunks/app/(app)/goals/page-4adb426fe1c96106.js +1 -0
- package/.next/static/chunks/app/(app)/inbox/page-e347dc55ab467310.js +1 -0
- package/.next/static/chunks/app/(app)/knowledge/page-65393a045b4349be.js +1 -0
- package/.next/static/chunks/app/(app)/layout-7f65675705b011d8.js +1 -0
- package/.next/static/chunks/app/(app)/models/page-e01f1dd7e49a2951.js +1 -0
- package/.next/static/chunks/app/(app)/notifications/page-56548ac87aef00da.js +1 -0
- package/.next/static/chunks/app/(app)/org/page-699e6a6dc0db7d81.js +1 -0
- package/.next/static/chunks/app/(app)/organizations/page-36051a380a7e8eb7.js +1 -0
- package/.next/static/chunks/app/(app)/page-7d1011a566f81520.js +1 -0
- package/.next/static/chunks/app/(app)/planner/page-dab7ced94083373a.js +1 -0
- package/.next/static/chunks/app/(app)/plugins/page-5b5a1f53389be42e.js +1 -0
- package/.next/static/chunks/app/(app)/pm/page-0de5c08c0b227bb0.js +1 -0
- package/.next/static/chunks/app/(app)/prepare-deploy/page-e426038552df8d41.js +1 -0
- package/.next/static/chunks/app/(app)/profile/page-608dfcaf8aae0a69.js +1 -0
- package/.next/static/chunks/app/(app)/pulse/page-309ccaca91de1faa.js +1 -0
- package/.next/static/chunks/app/(app)/reports/[id]/page-53ea1aff998a87ca.js +1 -0
- package/.next/static/chunks/app/(app)/reports/page-68cdc6dcfa472d86.js +1 -0
- package/.next/static/chunks/app/(app)/routines/page-bcc55550b197a9fa.js +1 -0
- package/.next/static/chunks/app/(app)/search/page-5c5f67558d0dbf0d.js +1 -0
- package/.next/static/chunks/app/(app)/security/page-a7d41e36aa366b45.js +1 -0
- package/.next/static/chunks/app/(app)/skills/page-c5b21e89593b8336.js +1 -0
- package/.next/static/chunks/app/(app)/tasks/page-08ae079e3e54d2ce.js +1 -0
- package/.next/static/chunks/app/(app)/test-dev/page-633f82dfd9c3ce23.js +1 -0
- package/.next/static/chunks/app/(app)/update/page-4be019054351bfac.js +1 -0
- package/.next/static/chunks/app/(auth)/login/page-6e85d3377062acae.js +1 -0
- package/.next/static/chunks/app/(auth)/onboarding/page-ebb10c175abf3b85.js +1 -0
- package/.next/static/chunks/app/_global-error/page-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/app/_not-found/page-dc38b02aebeab535.js +1 -0
- package/.next/static/chunks/app/api/auth/[...all]/route-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/app/api/cron/tick/route-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/app/api/dev-login/route-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/app/api/locks/acquire/route-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/app/api/models/progress/route-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/app/api/passkey/authenticate/options/route-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/app/api/passkey/authenticate/verify/route-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/app/api/passkey/register/options/route-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/app/api/passkey/register/verify/route-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/app/api/stream/route-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/app/api/sync/file/route-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/app/api/telegram/poll/route-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/app/api/upload/route-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/app/api/v1/[[...path]]/route-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/app/error-09899a13c38b6e89.js +1 -0
- package/.next/static/chunks/app/global-error-b8050d4d886f448c.js +1 -0
- package/.next/static/chunks/app/layout-ab9deed1e7e2e9df.js +1 -0
- package/.next/static/chunks/framework-4b2c6b6043dd203f.js +1 -0
- package/.next/static/chunks/main-722e16032e7764d1.js +5 -0
- package/.next/static/chunks/main-app-761880af2b6f1962.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-23fe50a6bf589c97.js +1 -0
- package/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- package/.next/static/chunks/webpack-222e3894b78c67db.js +1 -0
- package/.next/static/css/0a9b5805594444e3.css +1 -0
- package/.next/static/yztMvBwyrWWkSqP6jfXoa/_buildManifest.js +1 -0
- package/.next/static/yztMvBwyrWWkSqP6jfXoa/_ssgManifest.js +1 -0
- package/.next/trace-build +1 -0
- package/.next/types/app/(app)/activity/page.ts +87 -0
- package/.next/types/app/(app)/agents/[handle]/page.ts +87 -0
- package/.next/types/app/(app)/code/page.ts +87 -0
- package/.next/types/app/(app)/config/page.ts +87 -0
- package/.next/types/app/(app)/costs/page.ts +87 -0
- package/.next/types/app/(app)/cron/page.ts +87 -0
- package/.next/types/app/(app)/dashboard/page.ts +87 -0
- package/.next/types/app/(app)/docs/[id]/page.ts +87 -0
- package/.next/types/app/(app)/docs/page.ts +87 -0
- package/.next/types/app/(app)/github/page.ts +87 -0
- package/.next/types/app/(app)/goals/page.ts +87 -0
- package/.next/types/app/(app)/inbox/page.ts +87 -0
- package/.next/types/app/(app)/knowledge/page.ts +87 -0
- package/.next/types/app/(app)/models/page.ts +87 -0
- package/.next/types/app/(app)/notifications/page.ts +87 -0
- package/.next/types/app/(app)/org/page.ts +87 -0
- package/.next/types/app/(app)/organizations/page.ts +87 -0
- package/.next/types/app/(app)/page.ts +87 -0
- package/.next/types/app/(app)/planner/page.ts +87 -0
- package/.next/types/app/(app)/plugins/page.ts +87 -0
- package/.next/types/app/(app)/pm/page.ts +87 -0
- package/.next/types/app/(app)/prepare-deploy/page.ts +87 -0
- package/.next/types/app/(app)/profile/page.ts +87 -0
- package/.next/types/app/(app)/pulse/page.ts +87 -0
- package/.next/types/app/(app)/reports/[id]/page.ts +87 -0
- package/.next/types/app/(app)/reports/page.ts +87 -0
- package/.next/types/app/(app)/routines/page.ts +87 -0
- package/.next/types/app/(app)/search/page.ts +87 -0
- package/.next/types/app/(app)/security/page.ts +87 -0
- package/.next/types/app/(app)/skills/page.ts +87 -0
- package/.next/types/app/(app)/tasks/page.ts +87 -0
- package/.next/types/app/(app)/test-dev/page.ts +87 -0
- package/.next/types/app/(app)/update/page.ts +87 -0
- package/.next/types/app/(auth)/login/page.ts +87 -0
- package/.next/types/app/(auth)/onboarding/page.ts +87 -0
- package/.next/types/app/api/auth/[...all]/route.ts +351 -0
- package/.next/types/app/api/cron/tick/route.ts +351 -0
- package/.next/types/app/api/dev-login/route.ts +351 -0
- package/.next/types/app/api/locks/acquire/route.ts +351 -0
- package/.next/types/app/api/models/progress/route.ts +351 -0
- package/.next/types/app/api/passkey/authenticate/options/route.ts +351 -0
- package/.next/types/app/api/passkey/authenticate/verify/route.ts +351 -0
- package/.next/types/app/api/passkey/register/options/route.ts +351 -0
- package/.next/types/app/api/passkey/register/verify/route.ts +351 -0
- package/.next/types/app/api/stream/route.ts +351 -0
- package/.next/types/app/api/sync/file/route.ts +351 -0
- package/.next/types/app/api/telegram/poll/route.ts +351 -0
- package/.next/types/app/api/upload/route.ts +351 -0
- package/.next/types/app/api/v1/[[...path]]/route.ts +351 -0
- package/.next/types/cache-life.d.ts +145 -0
- package/.next/types/link.d.ts +210 -0
- package/.next/types/package.json +1 -0
- package/.next/types/routes.d.ts +120 -0
- package/.next/types/validator.ts +511 -0
- package/CHANGELOG.md +312 -0
- package/LICENSE +21 -0
- package/README.md +382 -0
- package/README.pt-BR.md +391 -0
- package/bin/constella.mjs +329 -0
- package/bin/guard-hook.mjs +44 -0
- package/bin/lock-hook.mjs +49 -0
- package/bin/worker.mjs +142 -0
- package/docs/assets/arch-orbit.svg +56 -0
- package/docs/assets/blackhole.svg +37 -0
- package/docs/assets/divider-orbit.svg +23 -0
- package/docs/assets/hero-constella.svg +72 -0
- package/docs/en/AGENTS.md +279 -0
- package/docs/en/AI_ARCHITECTURE.md +373 -0
- package/docs/en/ARCHITECTURE.md +334 -0
- package/docs/en/AUTH_MODE.md +247 -0
- package/docs/en/CHAT_COMMANDS.md +305 -0
- package/docs/en/CONFIGURATION.md +340 -0
- package/docs/en/DEPLOY.md +331 -0
- package/docs/en/DM.md +297 -0
- package/docs/en/FAQ.md +258 -0
- package/docs/en/GITHUB.md +341 -0
- package/docs/en/GOALS_SPECS_ISSUES.md +303 -0
- package/docs/en/INBOX.md +340 -0
- package/docs/en/INSTALLATION.md +329 -0
- package/docs/en/KB_AGENT.md +305 -0
- package/docs/en/KB_RAG.md +356 -0
- package/docs/en/MCP.md +313 -0
- package/docs/en/MEMORY_RAG.md +289 -0
- package/docs/en/MODELS.md +341 -0
- package/docs/en/ONBOARDING.md +327 -0
- package/docs/en/PLUGINS.md +290 -0
- package/docs/en/PORTABLE_MODE.md +387 -0
- package/docs/en/PO_AGENT.md +379 -0
- package/docs/en/PREPARE_DEPLOY.md +308 -0
- package/docs/en/PROJECT_STACKS.md +258 -0
- package/docs/en/PUBLIC_API.md +315 -0
- package/docs/en/PUBLISHING.md +343 -0
- package/docs/en/README.md +95 -0
- package/docs/en/SECURITY.md +280 -0
- package/docs/en/SKILLS.md +349 -0
- package/docs/en/START_MODE.md +340 -0
- package/docs/en/SYNCED_BLOCKS.md +320 -0
- package/docs/en/TEAM_ROOM.md +285 -0
- package/docs/en/TELEGRAM.md +294 -0
- package/docs/en/TEST_DEV.md +321 -0
- package/docs/en/TROUBLESHOOTING.md +294 -0
- package/docs/en/UPDATE.md +301 -0
- package/docs/en/VPS_MODE.md +334 -0
- package/docs/en/WORKFLOW.md +321 -0
- package/docs/pt/AGENTS.md +279 -0
- package/docs/pt/AI_ARCHITECTURE.md +373 -0
- package/docs/pt/ARCHITECTURE.md +334 -0
- package/docs/pt/AUTH_MODE.md +247 -0
- package/docs/pt/CHAT_COMMANDS.md +307 -0
- package/docs/pt/CONFIGURATION.md +340 -0
- package/docs/pt/DEPLOY.md +331 -0
- package/docs/pt/DM.md +297 -0
- package/docs/pt/FAQ.md +258 -0
- package/docs/pt/GITHUB.md +341 -0
- package/docs/pt/GOALS_SPECS_ISSUES.md +303 -0
- package/docs/pt/INBOX.md +340 -0
- package/docs/pt/INSTALLATION.md +329 -0
- package/docs/pt/KB_AGENT.md +305 -0
- package/docs/pt/KB_RAG.md +356 -0
- package/docs/pt/MCP.md +313 -0
- package/docs/pt/MEMORY_RAG.md +289 -0
- package/docs/pt/MODELS.md +341 -0
- package/docs/pt/ONBOARDING.md +327 -0
- package/docs/pt/PLUGINS.md +290 -0
- package/docs/pt/PORTABLE_MODE.md +387 -0
- package/docs/pt/PO_AGENT.md +379 -0
- package/docs/pt/PREPARE_DEPLOY.md +308 -0
- package/docs/pt/PROJECT_STACKS.md +258 -0
- package/docs/pt/PUBLIC_API.md +315 -0
- package/docs/pt/PUBLISHING.md +343 -0
- package/docs/pt/README.md +95 -0
- package/docs/pt/SECURITY.md +280 -0
- package/docs/pt/SKILLS.md +349 -0
- package/docs/pt/START_MODE.md +340 -0
- package/docs/pt/SYNCED_BLOCKS.md +320 -0
- package/docs/pt/TEAM_ROOM.md +285 -0
- package/docs/pt/TELEGRAM.md +294 -0
- package/docs/pt/TEST_DEV.md +321 -0
- package/docs/pt/TROUBLESHOOTING.md +294 -0
- package/docs/pt/UPDATE.md +301 -0
- package/docs/pt/VPS_MODE.md +334 -0
- package/docs/pt/WORKFLOW.md +321 -0
- package/drizzle/0000_regular_nightshade.sql +644 -0
- package/drizzle/0001_mixed_zombie.sql +106 -0
- package/drizzle/meta/0000_snapshot.json +4650 -0
- package/drizzle/meta/0001_snapshot.json +5418 -0
- package/drizzle/meta/_journal.json +20 -0
- package/drizzle.config.mjs +16 -0
- package/next.config.mjs +18 -0
- package/package.json +130 -0
- package/scripts/clean-repo.mjs +20 -0
- package/scripts/dev-all.mjs +46 -0
- package/scripts/i18n-parity.mjs +57 -0
- package/scripts/mcp-server.mjs +100 -0
- package/scripts/postbuild.mjs +11 -0
- package/scripts/publish-public.mjs +116 -0
- package/scripts/start-all.mjs +45 -0
- package/scripts/trim-next.mjs +23 -0
- package/scripts/vps-install.sh +39 -0
- package/skills/CONTRIBUTING.md +122 -0
- package/skills/COVERAGE.md +129 -0
- package/skills/INDEX.json +3443 -0
- package/skills/README.md +57 -0
- package/skills/design/animation-motion/SKILL.md +60 -0
- package/skills/design/color-and-typography/SKILL.md +60 -0
- package/skills/design/css-techniques/SKILL.md +58 -0
- package/skills/design/design-systems/SKILL.md +60 -0
- package/skills/design/gradients/SKILL.md +59 -0
- package/skills/design/graphic-design-basics/SKILL.md +55 -0
- package/skills/design/microinteractions/SKILL.md +58 -0
- package/skills/design/responsive-layout/SKILL.md +59 -0
- package/skills/design/ui-ux-principles/SKILL.md +58 -0
- package/skills/engineering/architecture/api-design-rest-graphql/SKILL.md +67 -0
- package/skills/engineering/architecture/caching-strategies/SKILL.md +59 -0
- package/skills/engineering/architecture/data-modeling/SKILL.md +64 -0
- package/skills/engineering/architecture/message-queues-async/SKILL.md +58 -0
- package/skills/engineering/architecture/scalability-reliability/SKILL.md +62 -0
- package/skills/engineering/architecture/software-architecture-patterns/SKILL.md +56 -0
- package/skills/engineering/architecture/system-design-fundamentals/SKILL.md +56 -0
- package/skills/engineering/backend/auth-and-authorization/SKILL.md +62 -0
- package/skills/engineering/backend/backend-fundamentals/SKILL.md +65 -0
- package/skills/engineering/backend/observability-logging/SKILL.md +60 -0
- package/skills/engineering/frontend/accessibility-wcag/SKILL.md +57 -0
- package/skills/engineering/frontend/frontend-architecture/SKILL.md +65 -0
- package/skills/engineering/frontend/rendering-strategies-ssr-csr/SKILL.md +60 -0
- package/skills/engineering/frontend/state-management/SKILL.md +69 -0
- package/skills/engineering/performance/backend-performance/SKILL.md +69 -0
- package/skills/engineering/performance/database-query-optimization/SKILL.md +64 -0
- package/skills/engineering/performance/profiling-and-benchmarking/SKILL.md +60 -0
- package/skills/engineering/performance/web-performance-core-vitals/SKILL.md +72 -0
- package/skills/engineering/practices/clean-code/SKILL.md +61 -0
- package/skills/engineering/practices/code-optimization/SKILL.md +60 -0
- package/skills/engineering/practices/code-review-practices/SKILL.md +58 -0
- package/skills/engineering/practices/git-workflow/SKILL.md +62 -0
- package/skills/engineering/practices/refactoring/SKILL.md +58 -0
- package/skills/engineering/security/appsec-fundamentals/SKILL.md +70 -0
- package/skills/engineering/security/dependency-supply-chain/SKILL.md +77 -0
- package/skills/engineering/security/owasp-asvs/SKILL.md +54 -0
- package/skills/engineering/security/owasp-top-10/SKILL.md +63 -0
- package/skills/engineering/security/secrets-management/SKILL.md +58 -0
- package/skills/engineering/security/secure-auth-sessions/SKILL.md +56 -0
- package/skills/engineering/testing/tdd-and-coverage/SKILL.md +62 -0
- package/skills/engineering/testing/testing-strategy-pyramid/SKILL.md +56 -0
- package/skills/engineering/testing/unit-integration-e2e/SKILL.md +75 -0
- package/skills/languages/c/SKILL.md +74 -0
- package/skills/languages/clojure/SKILL.md +73 -0
- package/skills/languages/cpp/SKILL.md +75 -0
- package/skills/languages/csharp/SKILL.md +75 -0
- package/skills/languages/dart/SKILL.md +82 -0
- package/skills/languages/elixir/SKILL.md +74 -0
- package/skills/languages/erlang/SKILL.md +76 -0
- package/skills/languages/go/SKILL.md +83 -0
- package/skills/languages/haskell/SKILL.md +70 -0
- package/skills/languages/java/SKILL.md +71 -0
- package/skills/languages/javascript/SKILL.md +62 -0
- package/skills/languages/kotlin/SKILL.md +68 -0
- package/skills/languages/lua/SKILL.md +79 -0
- package/skills/languages/objectivec/SKILL.md +83 -0
- package/skills/languages/php/SKILL.md +74 -0
- package/skills/languages/python/SKILL.md +68 -0
- package/skills/languages/r/SKILL.md +70 -0
- package/skills/languages/ruby/SKILL.md +67 -0
- package/skills/languages/rust/SKILL.md +72 -0
- package/skills/languages/scala/SKILL.md +73 -0
- package/skills/languages/swift/SKILL.md +73 -0
- package/skills/languages/typescript/SKILL.md +69 -0
- package/skills/meta/authoring-agent-skills/SKILL.md +73 -0
- package/skills/meta/progressive-disclosure/SKILL.md +65 -0
- package/skills/meta/skill-frontmatter-spec/SKILL.md +65 -0
- package/skills/process/adr-technical-decisions/SKILL.md +59 -0
- package/skills/process/app-planning/SKILL.md +63 -0
- package/skills/process/architecture-before-code/SKILL.md +52 -0
- package/skills/process/breaking-work-into-sprints/SKILL.md +53 -0
- package/skills/process/idea-to-product/SKILL.md +50 -0
- package/skills/process/mocks-and-screen-flows/SKILL.md +52 -0
- package/skills/process/prioritization-moscow-rice/SKILL.md +64 -0
- package/skills/process/problem-framing/SKILL.md +51 -0
- package/skills/process/product-discovery/SKILL.md +53 -0
- package/skills/process/readme-generation/SKILL.md +90 -0
- package/skills/process/requirements-to-specs/SKILL.md +53 -0
- package/skills/process/research-official-docs/SKILL.md +58 -0
- package/skills/process/review-code-perf-security/SKILL.md +65 -0
- package/skills/process/security-by-design/SKILL.md +68 -0
- package/skills/process/specs-to-issues/SKILL.md +53 -0
- package/skills/process/testing-before-done/SKILL.md +61 -0
- package/skills/process/validating-ux-navigation/SKILL.md +63 -0
- package/skills/references/ai-attachments-ui/SKILL.md +66 -0
- package/skills/references/ai-in-browser-webllm/SKILL.md +74 -0
- package/skills/references/ai-tool-ui-patterns/SKILL.md +63 -0
- package/skills/references/component-patterns-gallery/SKILL.md +62 -0
- package/skills/references/gradient-resources/SKILL.md +66 -0
- package/skills/references/react-component-libraries/SKILL.md +61 -0
- package/skills/references/saas-landing-patterns/SKILL.md +67 -0
- package/skills/references/shadcn-tailwind-theming/SKILL.md +74 -0
- package/skills/references/vercel-ai-sdk-elements/SKILL.md +66 -0
- package/skills/references/web-animation-codrops/SKILL.md +68 -0
- package/skills/stacks/aiml/jupyter/SKILL.md +68 -0
- package/skills/stacks/aiml/keras/SKILL.md +77 -0
- package/skills/stacks/aiml/numpy/SKILL.md +69 -0
- package/skills/stacks/aiml/pandas/SKILL.md +72 -0
- package/skills/stacks/aiml/pytorch/SKILL.md +77 -0
- package/skills/stacks/aiml/scikit-learn/SKILL.md +74 -0
- package/skills/stacks/aiml/tensorflow/SKILL.md +79 -0
- package/skills/stacks/auth/auth0/SKILL.md +63 -0
- package/skills/stacks/auth/authjs/SKILL.md +69 -0
- package/skills/stacks/auth/clerk/SKILL.md +72 -0
- package/skills/stacks/auth/keycloak/SKILL.md +63 -0
- package/skills/stacks/auth/lucia/SKILL.md +56 -0
- package/skills/stacks/auth/passport/SKILL.md +70 -0
- package/skills/stacks/auth/supabase-auth/SKILL.md +66 -0
- package/skills/stacks/baas/amplify/SKILL.md +71 -0
- package/skills/stacks/baas/appwrite/SKILL.md +79 -0
- package/skills/stacks/baas/firebase/SKILL.md +73 -0
- package/skills/stacks/baas/heroku/SKILL.md +71 -0
- package/skills/stacks/backend/actix/SKILL.md +77 -0
- package/skills/stacks/backend/adonisjs/SKILL.md +65 -0
- package/skills/stacks/backend/aspnet-core/SKILL.md +75 -0
- package/skills/stacks/backend/codeigniter/SKILL.md +76 -0
- package/skills/stacks/backend/django/SKILL.md +62 -0
- package/skills/stacks/backend/express/SKILL.md +65 -0
- package/skills/stacks/backend/fastapi/SKILL.md +64 -0
- package/skills/stacks/backend/fastify/SKILL.md +64 -0
- package/skills/stacks/backend/fiber/SKILL.md +68 -0
- package/skills/stacks/backend/flask/SKILL.md +71 -0
- package/skills/stacks/backend/gin/SKILL.md +68 -0
- package/skills/stacks/backend/graphql/SKILL.md +70 -0
- package/skills/stacks/backend/hono/SKILL.md +64 -0
- package/skills/stacks/backend/koa/SKILL.md +63 -0
- package/skills/stacks/backend/laravel/SKILL.md +73 -0
- package/skills/stacks/backend/nestjs/SKILL.md +70 -0
- package/skills/stacks/backend/nginx/SKILL.md +77 -0
- package/skills/stacks/backend/phoenix/SKILL.md +68 -0
- package/skills/stacks/backend/rails/SKILL.md +67 -0
- package/skills/stacks/backend/spring/SKILL.md +70 -0
- package/skills/stacks/backend/spring-boot/SKILL.md +70 -0
- package/skills/stacks/backend/symfony/SKILL.md +77 -0
- package/skills/stacks/container/containerd/SKILL.md +75 -0
- package/skills/stacks/container/docker/SKILL.md +90 -0
- package/skills/stacks/container/podman/SKILL.md +93 -0
- package/skills/stacks/database/cassandra/SKILL.md +74 -0
- package/skills/stacks/database/cockroachdb/SKILL.md +69 -0
- package/skills/stacks/database/dynamodb/SKILL.md +62 -0
- package/skills/stacks/database/mariadb/SKILL.md +71 -0
- package/skills/stacks/database/mongodb/SKILL.md +71 -0
- package/skills/stacks/database/mysql/SKILL.md +72 -0
- package/skills/stacks/database/neon/SKILL.md +68 -0
- package/skills/stacks/database/planetscale/SKILL.md +70 -0
- package/skills/stacks/database/postgresql/SKILL.md +81 -0
- package/skills/stacks/database/redis/SKILL.md +78 -0
- package/skills/stacks/database/sqlite/SKILL.md +70 -0
- package/skills/stacks/database/supabase/SKILL.md +79 -0
- package/skills/stacks/dataviz/chart-js/SKILL.md +72 -0
- package/skills/stacks/dataviz/d3/SKILL.md +77 -0
- package/skills/stacks/dataviz/grafana/SKILL.md +69 -0
- package/skills/stacks/dataviz/plotly/SKILL.md +71 -0
- package/skills/stacks/frontend/alpine/SKILL.md +75 -0
- package/skills/stacks/frontend/angular/SKILL.md +75 -0
- package/skills/stacks/frontend/backbone/SKILL.md +82 -0
- package/skills/stacks/frontend/ember/SKILL.md +85 -0
- package/skills/stacks/frontend/htmx/SKILL.md +73 -0
- package/skills/stacks/frontend/lit/SKILL.md +76 -0
- package/skills/stacks/frontend/preact/SKILL.md +74 -0
- package/skills/stacks/frontend/qwik/SKILL.md +65 -0
- package/skills/stacks/frontend/react/SKILL.md +77 -0
- package/skills/stacks/frontend/solidjs/SKILL.md +75 -0
- package/skills/stacks/frontend/svelte/SKILL.md +70 -0
- package/skills/stacks/frontend/vue/SKILL.md +69 -0
- package/skills/stacks/infra/ansible/SKILL.md +76 -0
- package/skills/stacks/infra/aws/SKILL.md +66 -0
- package/skills/stacks/infra/azure/SKILL.md +72 -0
- package/skills/stacks/infra/circleci/SKILL.md +78 -0
- package/skills/stacks/infra/cloudflare/SKILL.md +65 -0
- package/skills/stacks/infra/fly-io/SKILL.md +63 -0
- package/skills/stacks/infra/gcp/SKILL.md +66 -0
- package/skills/stacks/infra/jenkins/SKILL.md +73 -0
- package/skills/stacks/infra/kubernetes/SKILL.md +64 -0
- package/skills/stacks/infra/netlify/SKILL.md +60 -0
- package/skills/stacks/infra/railway/SKILL.md +63 -0
- package/skills/stacks/infra/tailscale/SKILL.md +65 -0
- package/skills/stacks/infra/terraform/SKILL.md +75 -0
- package/skills/stacks/infra/vagrant/SKILL.md +70 -0
- package/skills/stacks/infra/vercel/SKILL.md +60 -0
- package/skills/stacks/meta/astro/SKILL.md +64 -0
- package/skills/stacks/meta/docusaurus/SKILL.md +71 -0
- package/skills/stacks/meta/eleventy/SKILL.md +69 -0
- package/skills/stacks/meta/gatsby/SKILL.md +63 -0
- package/skills/stacks/meta/hugo/SKILL.md +73 -0
- package/skills/stacks/meta/jekyll/SKILL.md +70 -0
- package/skills/stacks/meta/nextjs/SKILL.md +62 -0
- package/skills/stacks/meta/nuxt/SKILL.md +66 -0
- package/skills/stacks/meta/remix/SKILL.md +67 -0
- package/skills/stacks/meta/sveltekit/SKILL.md +70 -0
- package/skills/stacks/meta/vite/SKILL.md +63 -0
- package/skills/stacks/mobile/android/SKILL.md +77 -0
- package/skills/stacks/mobile/flutter/SKILL.md +77 -0
- package/skills/stacks/mobile/ionic/SKILL.md +72 -0
- package/skills/stacks/mobile/nativescript/SKILL.md +71 -0
- package/skills/stacks/mobile/react-native/SKILL.md +75 -0
- package/skills/stacks/mobile/xamarin/SKILL.md +73 -0
- package/skills/stacks/orm/diesel/SKILL.md +72 -0
- package/skills/stacks/orm/django-orm/SKILL.md +58 -0
- package/skills/stacks/orm/drizzle/SKILL.md +67 -0
- package/skills/stacks/orm/gorm/SKILL.md +73 -0
- package/skills/stacks/orm/knex/SKILL.md +64 -0
- package/skills/stacks/orm/mongoose/SKILL.md +64 -0
- package/skills/stacks/orm/prisma/SKILL.md +64 -0
- package/skills/stacks/orm/sequelize/SKILL.md +65 -0
- package/skills/stacks/orm/sqlalchemy/SKILL.md +71 -0
- package/skills/stacks/orm/typeorm/SKILL.md +70 -0
- package/skills/stacks/queue/bullmq/SKILL.md +69 -0
- package/skills/stacks/queue/celery/SKILL.md +68 -0
- package/skills/stacks/queue/kafka/SKILL.md +66 -0
- package/skills/stacks/queue/nats/SKILL.md +66 -0
- package/skills/stacks/queue/rabbitmq/SKILL.md +64 -0
- package/skills/stacks/queue/redis/SKILL.md +66 -0
- package/skills/stacks/runtime/beam/SKILL.md +72 -0
- package/skills/stacks/runtime/bun/SKILL.md +80 -0
- package/skills/stacks/runtime/deno/SKILL.md +74 -0
- package/skills/stacks/runtime/dotnet/SKILL.md +64 -0
- package/skills/stacks/runtime/jvm/SKILL.md +66 -0
- package/skills/stacks/runtime/node/SKILL.md +70 -0
- package/skills/stacks/runtime/pypy/SKILL.md +69 -0
- package/skills/stacks/runtime/python3/SKILL.md +70 -0
- package/skills/stacks/styling/bootstrap/SKILL.md +74 -0
- package/skills/stacks/styling/bulma/SKILL.md +80 -0
- package/skills/stacks/styling/chakra-ui/SKILL.md +61 -0
- package/skills/stacks/styling/css-modules/SKILL.md +54 -0
- package/skills/stacks/styling/mui/SKILL.md +60 -0
- package/skills/stacks/styling/sass/SKILL.md +63 -0
- package/skills/stacks/styling/shadcn-ui/SKILL.md +58 -0
- package/skills/stacks/styling/styled-components/SKILL.md +62 -0
- package/skills/stacks/styling/tailwind/SKILL.md +59 -0
- package/skills/stacks/styling/unocss/SKILL.md +64 -0
- package/skills/stacks/styling/vanilla-extract/SKILL.md +64 -0
- package/skills/stacks/styling/vuetify/SKILL.md +89 -0
- package/skills/stacks/testing/cypress/SKILL.md +68 -0
- package/skills/stacks/testing/jasmine/SKILL.md +67 -0
- package/skills/stacks/testing/jest/SKILL.md +67 -0
- package/skills/stacks/testing/mocha/SKILL.md +71 -0
- package/skills/stacks/testing/playwright/SKILL.md +68 -0
- package/skills/stacks/testing/puppeteer/SKILL.md +70 -0
- package/skills/stacks/testing/selenium/SKILL.md +70 -0
- package/skills/stacks/testing/vitest/SKILL.md +68 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: diesel
|
|
3
|
+
description: Safe, extensible compile-time-checked ORM and query builder for Rust; consult for type-safe SQL against PostgreSQL, MySQL, or SQLite in Rust.
|
|
4
|
+
domain: stack
|
|
5
|
+
category: orm
|
|
6
|
+
tags: [orm, rust, query-builder, postgresql, sqlite, mysql]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://diesel.rs/guides/
|
|
9
|
+
- https://github.com/diesel-rs/diesel
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Diesel
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
Diesel is a safe, extensible ORM and query builder for Rust that uses Rust's type system to catch query errors at compile time and eliminate boilerplate. It supports PostgreSQL, MySQL, and SQLite with a zero-cost, Rust-like query DSL. Read this when building Rust applications that need type-safe, performant database access.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Docs / guides: https://diesel.rs/guides/
|
|
20
|
+
- Repo: https://github.com/diesel-rs/diesel
|
|
21
|
+
- Install / getting started: https://diesel.rs/guides/getting-started
|
|
22
|
+
|
|
23
|
+
## Install / setup
|
|
24
|
+
```bash
|
|
25
|
+
cargo install diesel_cli --no-default-features --features postgres
|
|
26
|
+
```
|
|
27
|
+
Add to `Cargo.toml`:
|
|
28
|
+
```toml
|
|
29
|
+
diesel = { version = "2.2.0", features = ["postgres"] }
|
|
30
|
+
dotenvy = "0.15"
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Core concepts
|
|
34
|
+
- **diesel_cli**: command-line tool that creates the database, manages migrations, and generates schema (`diesel setup`, `diesel migration`).
|
|
35
|
+
- **schema.rs**: generated `table!` definitions describing tables and columns, used for compile-time query checking.
|
|
36
|
+
- **Migrations**: pairs of `up.sql`/`down.sql` files applied and reverted by the CLI.
|
|
37
|
+
- **Connection**: a typed connection (e.g. `PgConnection`) established with a database URL.
|
|
38
|
+
- **Query DSL**: methods like `filter`, `select`, `load`, `insert_into` compile to checked SQL.
|
|
39
|
+
- **Derive macros**: `Queryable`, `Insertable`, `Selectable` map Rust structs to rows.
|
|
40
|
+
|
|
41
|
+
## Best practices
|
|
42
|
+
- Install `diesel_cli` with only the features you need (e.g. `--no-default-features --features postgres`) to avoid pulling in unused client libraries (per the getting-started guide).
|
|
43
|
+
- Keep `schema.rs` generated from migrations rather than hand-editing it, so it matches the database.
|
|
44
|
+
- Store the connection URL in a `.env` file (used with `dotenvy`) as shown in the guide.
|
|
45
|
+
- Write reversible migrations (`up.sql` + `down.sql`) and run them through the CLI.
|
|
46
|
+
|
|
47
|
+
## Common pitfalls
|
|
48
|
+
- Installing `diesel_cli` without the right backend feature → build errors or a CLI that cannot talk to your database; specify the backend feature.
|
|
49
|
+
- Editing `schema.rs` by hand → drift from the real schema; regenerate it from migrations instead.
|
|
50
|
+
|
|
51
|
+
## Examples
|
|
52
|
+
```rust
|
|
53
|
+
use diesel::prelude::*;
|
|
54
|
+
|
|
55
|
+
#[derive(Queryable, Selectable)]
|
|
56
|
+
#[diesel(table_name = crate::schema::users)]
|
|
57
|
+
struct User { id: i32, name: String }
|
|
58
|
+
|
|
59
|
+
let conn = &mut PgConnection::establish(&database_url)?;
|
|
60
|
+
let results = users::table
|
|
61
|
+
.filter(users::name.eq("Ada"))
|
|
62
|
+
.select(User::as_select())
|
|
63
|
+
.load(conn)?;
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Further reading
|
|
67
|
+
- https://diesel.rs/guides/getting-started — getting started
|
|
68
|
+
- https://diesel.rs/guides/all-about-inserts — inserts guide
|
|
69
|
+
|
|
70
|
+
## Related skills
|
|
71
|
+
- ../gorm — Go's standard ORM (contrast: another typed-language ORM)
|
|
72
|
+
- ../prisma — type-safe ORM in the TS ecosystem
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: django-orm
|
|
3
|
+
description: Django's built-in ORM — models, QuerySets, migrations, and the admin; consult for relational data access inside a Django project.
|
|
4
|
+
domain: stack
|
|
5
|
+
category: orm
|
|
6
|
+
tags: [orm, python, django, models, queryset, migrations]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://docs.djangoproject.com/en/stable/topics/db/
|
|
9
|
+
- https://github.com/django/django
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Django ORM
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
The Django ORM ships with the Django web framework and is the single, definitive source of truth for your data: each model maps to a database table, and you query through lazy QuerySets. It includes a migration system and integrates with the Django admin. Read this when building data access inside a Django project rather than as a standalone library (the ORM is not distributed separately).
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Docs: https://docs.djangoproject.com/en/stable/topics/db/
|
|
20
|
+
- Repo: https://github.com/django/django
|
|
21
|
+
|
|
22
|
+
## Core concepts
|
|
23
|
+
- **Models**: subclasses of `django.db.models.Model`; each field maps to a column and each model to a table.
|
|
24
|
+
- **QuerySets**: lazy, chainable query objects (`Model.objects.filter(...)`) that hit the database only when evaluated.
|
|
25
|
+
- **Managers**: the `objects` manager is the query entry point; custom managers add reusable query logic.
|
|
26
|
+
- **Migrations**: schema changes are captured by `makemigrations` and applied with `migrate`.
|
|
27
|
+
- **Relationships**: `ForeignKey`, `ManyToManyField`, `OneToOneField` model associations with related-object access.
|
|
28
|
+
- **Aggregation & raw SQL**: `annotate`/`aggregate` for grouped queries, plus escape hatches for raw SQL when needed.
|
|
29
|
+
|
|
30
|
+
## Best practices
|
|
31
|
+
- Use `select_related` (joins) and `prefetch_related` (separate queries) to avoid N+1 when traversing relations (per docs).
|
|
32
|
+
- Always create and review migrations with `makemigrations`/`migrate`; keep them in version control.
|
|
33
|
+
- Defer or restrict columns with `only()`/`defer()` and `values()` when you do not need full model instances.
|
|
34
|
+
- Wrap multi-step writes in `transaction.atomic()` for atomicity.
|
|
35
|
+
|
|
36
|
+
## Common pitfalls
|
|
37
|
+
- Iterating related objects in a loop without `select_related`/`prefetch_related` → N+1 query storms.
|
|
38
|
+
- Assuming QuerySets execute immediately → they are lazy and re-evaluating one repeatedly re-runs the query; cache with `list()` when reused.
|
|
39
|
+
|
|
40
|
+
## Examples
|
|
41
|
+
```python
|
|
42
|
+
from django.db import models
|
|
43
|
+
|
|
44
|
+
class User(models.Model):
|
|
45
|
+
name = models.CharField(max_length=50)
|
|
46
|
+
|
|
47
|
+
# querying
|
|
48
|
+
ada = User.objects.create(name="Ada")
|
|
49
|
+
adults = User.objects.filter(name="Ada").select_related()
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Further reading
|
|
53
|
+
- https://docs.djangoproject.com/en/stable/topics/db/queries/ — making queries
|
|
54
|
+
- https://docs.djangoproject.com/en/stable/topics/db/optimization/ — query optimization
|
|
55
|
+
|
|
56
|
+
## Related skills
|
|
57
|
+
- ../sqlalchemy — standalone Python ORM/toolkit alternative
|
|
58
|
+
- ../prisma — type-safe ORM in the TS ecosystem
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: drizzle
|
|
3
|
+
description: Lightweight, headless TypeScript-first SQL ORM with zero dependencies and SQL-like queries; consult for type-safe SQL in Node/edge runtimes.
|
|
4
|
+
domain: stack
|
|
5
|
+
category: orm
|
|
6
|
+
tags: [orm, typescript, nodejs, sql, serverless, postgresql]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://orm.drizzle.team/docs/overview
|
|
9
|
+
- https://github.com/drizzle-team/drizzle-orm
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Drizzle ORM
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
Drizzle is a headless, TypeScript-first ORM that stays close to SQL: you describe tables in TypeScript and write queries with a SQL-like fluent API. It is lightweight (~7.4kb minified+gzipped), tree-shakeable, and ships with zero dependencies, making it well suited to serverless and edge runtimes (Bun, Deno, Cloudflare Workers). Read this when you want type safety without a heavy abstraction layer over SQL.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Docs: https://orm.drizzle.team/docs/overview
|
|
20
|
+
- Repo: https://github.com/drizzle-team/drizzle-orm
|
|
21
|
+
- Install / get started: https://orm.drizzle.team/docs/get-started
|
|
22
|
+
|
|
23
|
+
## Install / setup
|
|
24
|
+
```bash
|
|
25
|
+
npm i drizzle-orm pg
|
|
26
|
+
npm i -D drizzle-kit @types/pg
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Core concepts
|
|
30
|
+
- **Schema in TypeScript**: tables/columns are declared with helpers like `pgTable`, giving full inference for queries.
|
|
31
|
+
- **Two query styles**: a SQL-like query builder (`select().from()...`) and a relational queries API for ergonomic nested reads.
|
|
32
|
+
- **drizzle-kit**: the companion CLI for generating and applying migrations from your TS schema.
|
|
33
|
+
- **Driver-agnostic**: connect via the appropriate driver (node-postgres, postgres.js, MySQL, SQLite/libSQL, etc.).
|
|
34
|
+
- **Headless / no codegen runtime**: types come from your schema declarations, not a generated client.
|
|
35
|
+
|
|
36
|
+
## Best practices
|
|
37
|
+
- Define schema in dedicated files and import them where queries run so types stay inferred end to end.
|
|
38
|
+
- Use `drizzle-kit generate` to produce migration SQL and apply it with `drizzle-kit migrate` (per Drizzle docs) rather than hand-editing tables.
|
|
39
|
+
- Pick the query API to match the task: the query builder for explicit SQL, relational queries for nested fetches.
|
|
40
|
+
- Pin and review generated migrations in version control before applying to production.
|
|
41
|
+
|
|
42
|
+
## Common pitfalls
|
|
43
|
+
- Expecting Prisma-style automatic client generation → Drizzle is headless; types derive from your schema declarations, so keep schema imports accurate.
|
|
44
|
+
- Mixing incompatible driver and dialect (e.g. a `pg` driver with a MySQL schema) → choose the driver/dialect pair the docs specify for your database.
|
|
45
|
+
|
|
46
|
+
## Examples
|
|
47
|
+
```ts
|
|
48
|
+
import { drizzle } from 'drizzle-orm/node-postgres'
|
|
49
|
+
import { pgTable, serial, text } from 'drizzle-orm/pg-core'
|
|
50
|
+
import { eq } from 'drizzle-orm'
|
|
51
|
+
|
|
52
|
+
export const users = pgTable('users', {
|
|
53
|
+
id: serial('id').primaryKey(),
|
|
54
|
+
name: text('name'),
|
|
55
|
+
})
|
|
56
|
+
|
|
57
|
+
const db = drizzle(process.env.DATABASE_URL!)
|
|
58
|
+
const ada = await db.select().from(users).where(eq(users.name, 'Ada'))
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Further reading
|
|
62
|
+
- https://orm.drizzle.team/docs/migrations — migrations with drizzle-kit
|
|
63
|
+
- https://orm.drizzle.team/docs/rqb — relational queries API
|
|
64
|
+
|
|
65
|
+
## Related skills
|
|
66
|
+
- ../prisma — schema-DSL ORM with codegen alternative
|
|
67
|
+
- ../knex — lower-level SQL query builder
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gorm
|
|
3
|
+
description: The fantastic, developer-friendly ORM for Go with associations, hooks, transactions, and auto-migration; consult for relational data access in Go.
|
|
4
|
+
domain: stack
|
|
5
|
+
category: orm
|
|
6
|
+
tags: [orm, go, golang, database, migrations, associations]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://gorm.io/docs/
|
|
9
|
+
- https://github.com/go-gorm/gorm
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# GORM
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
GORM is the de-facto ORM library for Go, aiming to be developer-friendly. It maps Go structs to tables and provides associations, hooks, transactions, eager loading, and auto-migration, with driver support for PostgreSQL, MySQL, SQLite, SQL Server, and others. Read this when building Go services that need a full-featured ORM rather than hand-written SQL.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Docs: https://gorm.io/docs/
|
|
20
|
+
- Repo: https://github.com/go-gorm/gorm
|
|
21
|
+
- Install / index: https://gorm.io/docs/index.html
|
|
22
|
+
|
|
23
|
+
## Install / setup
|
|
24
|
+
```bash
|
|
25
|
+
go get -u gorm.io/gorm
|
|
26
|
+
go get -u gorm.io/driver/sqlite
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Core concepts
|
|
30
|
+
- **Models**: plain Go structs whose fields map to columns; embed `gorm.Model` for ID/timestamps/soft-delete.
|
|
31
|
+
- **`*gorm.DB`**: the database handle opened with `gorm.Open(driver, &gorm.Config{})`; carries chainable method calls.
|
|
32
|
+
- **CRUD chain methods**: `Create`, `First`/`Find`, `Where`, `Update`, `Delete` build and run queries.
|
|
33
|
+
- **Associations**: `Has One`, `Has Many`, `Belongs To`, `Many To Many` with `Preload` for eager loading.
|
|
34
|
+
- **AutoMigrate**: creates/updates tables to match struct definitions.
|
|
35
|
+
- **Hooks & transactions**: lifecycle callbacks (`BeforeCreate` etc.) and `db.Transaction(func...)` for atomic work.
|
|
36
|
+
|
|
37
|
+
## Best practices
|
|
38
|
+
- Open the database once and reuse the shared `*gorm.DB`; it manages an underlying connection pool.
|
|
39
|
+
- Use `Preload` (or joins) to load associations and avoid N+1 queries (per docs).
|
|
40
|
+
- Treat `AutoMigrate` as convenient for development; review schema changes carefully before relying on it in production (it only adds, it will not delete columns).
|
|
41
|
+
- Always check the returned `error` (and `RowsAffected`) on query chains.
|
|
42
|
+
|
|
43
|
+
## Common pitfalls
|
|
44
|
+
- Ignoring the `.Error` field on a chained call → silent failures; inspect `result.Error` after each operation.
|
|
45
|
+
- Expecting `AutoMigrate` to drop or rename columns → it does not remove columns; use explicit migrations for destructive changes.
|
|
46
|
+
|
|
47
|
+
## Examples
|
|
48
|
+
```go
|
|
49
|
+
import (
|
|
50
|
+
"gorm.io/gorm"
|
|
51
|
+
"gorm.io/driver/sqlite"
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
type User struct {
|
|
55
|
+
gorm.Model
|
|
56
|
+
Name string
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
db, _ := gorm.Open(sqlite.Open("app.db"), &gorm.Config{})
|
|
60
|
+
db.AutoMigrate(&User{})
|
|
61
|
+
db.Create(&User{Name: "Ada"})
|
|
62
|
+
|
|
63
|
+
var u User
|
|
64
|
+
db.Where("name = ?", "Ada").First(&u)
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Further reading
|
|
68
|
+
- https://gorm.io/docs/models.html — declaring models
|
|
69
|
+
- https://gorm.io/docs/preload.html — preloading associations
|
|
70
|
+
|
|
71
|
+
## Related skills
|
|
72
|
+
- ../diesel — Rust's type-safe ORM (contrast: another typed-language ORM)
|
|
73
|
+
- ../prisma — type-safe ORM in the TS ecosystem
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: knex
|
|
3
|
+
description: Flexible multi-dialect SQL query builder for Node.js with transactions, pooling, and migrations; consult when you want SQL control without a full ORM.
|
|
4
|
+
domain: stack
|
|
5
|
+
category: orm
|
|
6
|
+
tags: [query-builder, nodejs, sql, migrations, transactions, postgresql]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://knexjs.org/
|
|
9
|
+
- https://github.com/knex/knex
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Knex.js
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
Knex is a batteries-included, multi-dialect SQL query builder for Node.js supporting PostgreSQL, MySQL/MariaDB, SQLite3, MSSQL, CockroachDB, and Oracle. It builds SQL with a fluent, chainable API and adds transactions, connection pooling, streaming, and a migration/seed system. Read this when you want fine SQL control and portability without the abstraction of a full ORM.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Docs: https://knexjs.org/
|
|
20
|
+
- Repo: https://github.com/knex/knex
|
|
21
|
+
- Install / guide: https://knexjs.org/guide/#node-js
|
|
22
|
+
|
|
23
|
+
## Install / setup
|
|
24
|
+
```bash
|
|
25
|
+
npm install knex --save
|
|
26
|
+
npm install pg
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Core concepts
|
|
30
|
+
- **Knex instance**: configured with a `client` (dialect) and `connection`; created once and reused.
|
|
31
|
+
- **Query builder**: chainable methods (`select`, `where`, `join`, `insert`, `update`, `del`) that compile to SQL.
|
|
32
|
+
- **Schema builder**: `knex.schema.createTable(...)` for DDL.
|
|
33
|
+
- **Migrations & seeds**: versioned schema changes and seed data run via the Knex CLI.
|
|
34
|
+
- **Transactions**: `knex.transaction(async trx => …)` for atomic multi-statement work.
|
|
35
|
+
- **Connection pooling**: built-in pool managed per Knex instance.
|
|
36
|
+
|
|
37
|
+
## Best practices
|
|
38
|
+
- Install only the driver for your database (e.g. `pg`, `mysql2`, `sqlite3`) as the install guide instructs.
|
|
39
|
+
- Create a single Knex instance and share it; each instance owns a connection pool.
|
|
40
|
+
- Use migrations for all schema changes and commit them to version control.
|
|
41
|
+
- Use parameterized builder methods (not string concatenation) to avoid SQL injection; use `knex.raw` with bindings when raw SQL is needed.
|
|
42
|
+
|
|
43
|
+
## Common pitfalls
|
|
44
|
+
- Creating multiple Knex instances → multiple pools that can exhaust database connections; reuse one instance.
|
|
45
|
+
- Interpolating user input into `knex.raw` strings → SQL injection; pass values as bindings (`?`) instead.
|
|
46
|
+
|
|
47
|
+
## Examples
|
|
48
|
+
```js
|
|
49
|
+
const knex = require('knex')({
|
|
50
|
+
client: 'pg',
|
|
51
|
+
connection: process.env.DATABASE_URL,
|
|
52
|
+
})
|
|
53
|
+
|
|
54
|
+
await knex('users').insert({ name: 'Ada' })
|
|
55
|
+
const users = await knex('users').where({ name: 'Ada' }).select('*')
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Further reading
|
|
59
|
+
- https://knexjs.org/guide/migrations.html — migrations
|
|
60
|
+
- https://knexjs.org/guide/query-builder.html — query builder reference
|
|
61
|
+
|
|
62
|
+
## Related skills
|
|
63
|
+
- ../drizzle — TS-first SQL ORM that also stays close to SQL
|
|
64
|
+
- ../sequelize — full ORM built atop query-builder concepts
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mongoose
|
|
3
|
+
description: MongoDB object modeling (ODM) for Node.js with schemas, validation, and middleware; consult for structured MongoDB access in JS/TS.
|
|
4
|
+
domain: stack
|
|
5
|
+
category: orm
|
|
6
|
+
tags: [odm, mongodb, nodejs, javascript, typescript, schema]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://mongoosejs.com/docs/
|
|
9
|
+
- https://github.com/Automattic/mongoose
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Mongoose
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
Mongoose is an Object Data Modeling (ODM) library for MongoDB designed to work in an asynchronous environment. It adds schemas, type casting, validation, query building, and middleware on top of the MongoDB driver. Read this when you want structure and validation around an otherwise schemaless MongoDB database in Node.js (or Deno).
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Docs: https://mongoosejs.com/docs/
|
|
20
|
+
- Repo: https://github.com/Automattic/mongoose
|
|
21
|
+
- Install / index: https://mongoosejs.com/docs/index.html
|
|
22
|
+
|
|
23
|
+
## Install / setup
|
|
24
|
+
```bash
|
|
25
|
+
npm install mongoose
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Core concepts
|
|
29
|
+
- **Schema**: defines document shape, types, defaults, and validation rules for a collection.
|
|
30
|
+
- **Model**: a constructor compiled from a schema (`mongoose.model()`) used to create and query documents.
|
|
31
|
+
- **Documents**: model instances with getters/setters, validation, and `.save()`.
|
|
32
|
+
- **Queries**: chainable query builder (`Model.find().where()...`) returning thenable queries.
|
|
33
|
+
- **Middleware (hooks)**: `pre`/`post` hooks on operations like `save`/`validate` for cross-cutting logic.
|
|
34
|
+
- **Population**: `populate()` resolves referenced documents across collections (Mongoose's join-like feature).
|
|
35
|
+
|
|
36
|
+
## Best practices
|
|
37
|
+
- Call `mongoose.connect()` once at startup and reuse the connection; Mongoose buffers operations until connected.
|
|
38
|
+
- Define validation and required fields in the schema so invalid documents are rejected before write.
|
|
39
|
+
- Use `lean()` for read-only queries to skip hydrating full Mongoose documents and improve performance.
|
|
40
|
+
- Use `populate()` selectively (with field selection) to avoid pulling large referenced documents.
|
|
41
|
+
|
|
42
|
+
## Common pitfalls
|
|
43
|
+
- Relying on `populate()` like a SQL join for heavy relational workloads → it issues extra queries; model data access patterns accordingly.
|
|
44
|
+
- Expecting MongoDB to enforce the schema → only Mongoose enforces it; writes via the raw driver bypass validation.
|
|
45
|
+
|
|
46
|
+
## Examples
|
|
47
|
+
```js
|
|
48
|
+
const mongoose = require('mongoose')
|
|
49
|
+
await mongoose.connect(process.env.MONGODB_URI)
|
|
50
|
+
|
|
51
|
+
const userSchema = new mongoose.Schema({ name: { type: String, required: true } })
|
|
52
|
+
const User = mongoose.model('User', userSchema)
|
|
53
|
+
|
|
54
|
+
const ada = await User.create({ name: 'Ada' })
|
|
55
|
+
const users = await User.find({ name: 'Ada' }).lean()
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Further reading
|
|
59
|
+
- https://mongoosejs.com/docs/guide.html — schemas guide
|
|
60
|
+
- https://mongoosejs.com/docs/populate.html — population
|
|
61
|
+
|
|
62
|
+
## Related skills
|
|
63
|
+
- ../prisma — also supports MongoDB with a typed client
|
|
64
|
+
- ../sequelize — ORM for SQL databases (contrast: relational vs document)
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: prisma
|
|
3
|
+
description: Type-safe TS/JS ORM with a declarative schema DSL, auto-generated client, and migrations; consult when modeling data in Node.js.
|
|
4
|
+
domain: stack
|
|
5
|
+
category: orm
|
|
6
|
+
tags: [orm, typescript, nodejs, database, migrations, postgresql]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://www.prisma.io/docs
|
|
9
|
+
- https://github.com/prisma/prisma
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Prisma ORM
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
Prisma is a next-generation ORM for Node.js and TypeScript. You declare your data model in a single `schema.prisma` file using its schema DSL, then Prisma generates a fully type-safe query client and manages SQL migrations. Read this when you need ergonomic, type-checked database access against PostgreSQL, MySQL, MariaDB, SQL Server, SQLite, MongoDB, or CockroachDB.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Docs: https://www.prisma.io/docs
|
|
20
|
+
- Repo: https://github.com/prisma/prisma
|
|
21
|
+
- Install / quickstart: https://www.prisma.io/docs/getting-started/quickstart
|
|
22
|
+
|
|
23
|
+
## Install / setup
|
|
24
|
+
```bash
|
|
25
|
+
npm install prisma @types/pg --save-dev
|
|
26
|
+
npm install @prisma/client @prisma/adapter-pg pg dotenv
|
|
27
|
+
npx prisma init --output ../generated/prisma
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Core concepts
|
|
31
|
+
- **Prisma schema (`schema.prisma`)**: the single source of truth — declares the datasource, generator, and `model` definitions in Prisma's DSL.
|
|
32
|
+
- **Prisma Client**: an auto-generated, type-safe query builder; regenerate it with `npx prisma generate` after schema changes.
|
|
33
|
+
- **Prisma Migrate**: turns schema changes into SQL migration files via `npx prisma migrate dev`.
|
|
34
|
+
- **Models, fields, and relations**: each `model` maps to a table; relation fields and `@relation` express foreign keys.
|
|
35
|
+
- **Prisma Studio**: a GUI to browse and edit data, launched with `npx prisma studio`.
|
|
36
|
+
|
|
37
|
+
## Best practices
|
|
38
|
+
- Keep the schema as the source of truth and commit migration files; use `migrate dev` in development and `migrate deploy` in production (per Prisma docs).
|
|
39
|
+
- Run `prisma generate` whenever the schema changes so the client's types stay in sync.
|
|
40
|
+
- Instantiate a single `PrismaClient` and reuse it; avoid creating many instances which exhausts the connection pool.
|
|
41
|
+
- Use `select`/`include` to fetch only needed fields and relations rather than over-fetching.
|
|
42
|
+
|
|
43
|
+
## Common pitfalls
|
|
44
|
+
- Instantiating `PrismaClient` per request (common in serverless/hot-reload) → exhausts connections; use a shared singleton.
|
|
45
|
+
- Forgetting to run `prisma generate` after editing the schema → stale types and runtime mismatches; regenerate after every change.
|
|
46
|
+
|
|
47
|
+
## Examples
|
|
48
|
+
```ts
|
|
49
|
+
import { PrismaClient } from './generated/prisma'
|
|
50
|
+
const prisma = new PrismaClient()
|
|
51
|
+
|
|
52
|
+
const user = await prisma.user.create({
|
|
53
|
+
data: { email: 'a@example.com', name: 'Ada' },
|
|
54
|
+
})
|
|
55
|
+
const users = await prisma.user.findMany({ where: { name: 'Ada' } })
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Further reading
|
|
59
|
+
- https://www.prisma.io/docs/orm/prisma-schema — Prisma schema reference
|
|
60
|
+
- https://www.prisma.io/docs/orm/prisma-migrate — Prisma Migrate guide
|
|
61
|
+
|
|
62
|
+
## Related skills
|
|
63
|
+
- ../drizzle — lighter-weight TypeScript SQL ORM alternative
|
|
64
|
+
- ../typeorm — decorator-based TS/JS ORM alternative
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sequelize
|
|
3
|
+
description: Mature promise-based JS/TS ORM for SQL databases with models, associations, and transactions; consult for established Node.js relational data access.
|
|
4
|
+
domain: stack
|
|
5
|
+
category: orm
|
|
6
|
+
tags: [orm, nodejs, javascript, typescript, sql, transactions]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://sequelize.org/docs/v6/
|
|
9
|
+
- https://github.com/sequelize/sequelize
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Sequelize
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
Sequelize is a mature, promise-based ORM for Node.js that targets SQL databases including PostgreSQL, MySQL, MariaDB, SQLite, and SQL Server. It provides model definitions, associations, eager/lazy loading, transactions, and read replication. Read this when working in an established JavaScript/TypeScript codebase that uses Sequelize or when you want a battle-tested relational ORM.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Docs: https://sequelize.org/docs/v6/
|
|
20
|
+
- Repo: https://github.com/sequelize/sequelize
|
|
21
|
+
- Install / getting started: https://sequelize.org/docs/v6/getting-started/
|
|
22
|
+
|
|
23
|
+
## Install / setup
|
|
24
|
+
```bash
|
|
25
|
+
npm install --save sequelize
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Core concepts
|
|
29
|
+
- **Sequelize instance**: the connection object created with a connection URI or options, plus the chosen dialect driver.
|
|
30
|
+
- **Models**: defined via `sequelize.define()` or by extending `Model`; map to tables with typed attributes.
|
|
31
|
+
- **Associations**: `hasOne`, `hasMany`, `belongsTo`, `belongsToMany` express relationships and generate helper methods.
|
|
32
|
+
- **Querying**: finder methods (`findAll`, `findOne`, `findByPk`) with `where` operators and `include` for eager loading.
|
|
33
|
+
- **Transactions**: managed (`sequelize.transaction(async t => …)`) or unmanaged, for atomic multi-statement work.
|
|
34
|
+
- **Migrations & seeders**: managed via the separate Sequelize CLI.
|
|
35
|
+
|
|
36
|
+
## Best practices
|
|
37
|
+
- Install the dialect-specific driver alongside Sequelize (e.g. `pg`, `mysql2`, `sqlite3`) as the docs require.
|
|
38
|
+
- Use managed transactions so commit/rollback is handled automatically on success/error.
|
|
39
|
+
- Prefer migrations over `sync({ force: true })` in production, which drops and recreates tables.
|
|
40
|
+
- Use `include` deliberately and select only needed attributes to avoid N+1 and over-fetching.
|
|
41
|
+
|
|
42
|
+
## Common pitfalls
|
|
43
|
+
- Running `sequelize.sync({ force: true })` against a real database → drops all tables; use migrations instead.
|
|
44
|
+
- Forgetting to install the dialect driver → connection fails at startup; install the matching driver package.
|
|
45
|
+
|
|
46
|
+
## Examples
|
|
47
|
+
```js
|
|
48
|
+
const { Sequelize, DataTypes } = require('sequelize')
|
|
49
|
+
const sequelize = new Sequelize(process.env.DATABASE_URL)
|
|
50
|
+
|
|
51
|
+
const User = sequelize.define('User', {
|
|
52
|
+
name: { type: DataTypes.STRING },
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
await sequelize.authenticate()
|
|
56
|
+
const ada = await User.create({ name: 'Ada' })
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Further reading
|
|
60
|
+
- https://sequelize.org/docs/v6/core-concepts/model-basics/ — model basics
|
|
61
|
+
- https://sequelize.org/docs/v6/other-topics/transactions/ — transactions
|
|
62
|
+
|
|
63
|
+
## Related skills
|
|
64
|
+
- ../typeorm — decorator-based TS/JS ORM alternative
|
|
65
|
+
- ../knex — lower-level SQL query builder Sequelize sits above
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sqlalchemy
|
|
3
|
+
description: The de-facto Python SQL toolkit and ORM with Core expression language and full ORM layer; consult for relational data access in Python.
|
|
4
|
+
domain: stack
|
|
5
|
+
category: orm
|
|
6
|
+
tags: [orm, python, sql, database, core, session]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://docs.sqlalchemy.org/
|
|
9
|
+
- https://github.com/sqlalchemy/sqlalchemy
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# SQLAlchemy
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
SQLAlchemy is the de-facto Python SQL toolkit and Object Relational Mapper. It offers two layers: **Core**, a Python SQL expression language and database abstraction, and the **ORM**, which maps classes to tables using the unit-of-work and identity-map patterns. Read this for relational database access in Python when you want full control over SQL alongside high-level ORM mapping.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Docs: https://docs.sqlalchemy.org/
|
|
20
|
+
- Repo: https://github.com/sqlalchemy/sqlalchemy
|
|
21
|
+
- Install: https://docs.sqlalchemy.org/en/20/intro.html#installation
|
|
22
|
+
|
|
23
|
+
## Install / setup
|
|
24
|
+
```bash
|
|
25
|
+
pip install SQLAlchemy
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Core concepts
|
|
29
|
+
- **Engine**: the starting point created with `create_engine()`; manages DBAPI connections and the connection pool.
|
|
30
|
+
- **Core vs ORM**: Core exposes the SQL Expression Language (`Table`, `select()`); the ORM maps classes via declarative models.
|
|
31
|
+
- **Declarative models**: classes inheriting from a `DeclarativeBase` with `Mapped`/`mapped_column` (2.0 style) map to tables.
|
|
32
|
+
- **Session**: the ORM's unit of work — tracks changes and flushes them in a transaction; obtain via `Session`/`sessionmaker`.
|
|
33
|
+
- **2.0 unified query API**: `select()` with `session.execute()` / `session.scalars()` is the modern querying style.
|
|
34
|
+
- **Relationships**: `relationship()` defines associations with configurable lazy/eager loading strategies.
|
|
35
|
+
|
|
36
|
+
## Best practices
|
|
37
|
+
- Create one `Engine` per database and reuse it; do not create engines per request (per docs, the engine owns the pool).
|
|
38
|
+
- Scope `Session` to a logical unit of work and use it as a context manager / `session.begin()` so transactions commit or roll back cleanly.
|
|
39
|
+
- Use the 2.0-style `select()` API and `Mapped`/`mapped_column` typing for new code.
|
|
40
|
+
- Configure relationship loading (`selectin`, `joined`) deliberately to control eager vs lazy loading and avoid N+1.
|
|
41
|
+
|
|
42
|
+
## Common pitfalls
|
|
43
|
+
- Sharing a single `Session` across threads/requests → it is not thread-safe; use a fresh session per unit of work (or `scoped_session`).
|
|
44
|
+
- Triggering lazy loads after the session closes → `DetachedInstanceError`; load needed relationships eagerly or keep the session open.
|
|
45
|
+
|
|
46
|
+
## Examples
|
|
47
|
+
```python
|
|
48
|
+
from sqlalchemy import create_engine, String
|
|
49
|
+
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, Session
|
|
50
|
+
|
|
51
|
+
class Base(DeclarativeBase): ...
|
|
52
|
+
|
|
53
|
+
class User(Base):
|
|
54
|
+
__tablename__ = "users"
|
|
55
|
+
id: Mapped[int] = mapped_column(primary_key=True)
|
|
56
|
+
name: Mapped[str] = mapped_column(String(50))
|
|
57
|
+
|
|
58
|
+
engine = create_engine("postgresql+psycopg://localhost/app")
|
|
59
|
+
Base.metadata.create_all(engine)
|
|
60
|
+
with Session(engine) as session:
|
|
61
|
+
session.add(User(name="Ada"))
|
|
62
|
+
session.commit()
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Further reading
|
|
66
|
+
- https://docs.sqlalchemy.org/en/20/orm/quickstart.html — ORM quickstart
|
|
67
|
+
- https://docs.sqlalchemy.org/en/20/tutorial/index.html — unified tutorial
|
|
68
|
+
|
|
69
|
+
## Related skills
|
|
70
|
+
- ../django-orm — Python ORM bundled with Django
|
|
71
|
+
- ../prisma — type-safe ORM in the TS ecosystem
|