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,70 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: typeorm
|
|
3
|
+
description: Decorator-based TS/JS ORM supporting Active Record and Data Mapper patterns across many databases; consult for entity-driven Node.js data access.
|
|
4
|
+
domain: stack
|
|
5
|
+
category: orm
|
|
6
|
+
tags: [orm, typescript, nodejs, decorators, database, migrations]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://typeorm.io/
|
|
9
|
+
- https://github.com/typeorm/typeorm
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# TypeORM
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
TypeORM is an ORM for TypeScript and JavaScript that runs on Node.js (and other platforms) and supports both the Active Record and Data Mapper patterns. You define entities as decorated classes, and TypeORM maps them to tables across PostgreSQL, MySQL/MariaDB, SQLite, SQL Server, Oracle, CockroachDB, MongoDB, and more. Read this when you prefer a class/decorator entity model influenced by Hibernate and Entity Framework.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Docs: https://typeorm.io/
|
|
20
|
+
- Repo: https://github.com/typeorm/typeorm
|
|
21
|
+
- Install / getting started: https://typeorm.io/docs/getting-started/
|
|
22
|
+
|
|
23
|
+
## Install / setup
|
|
24
|
+
```bash
|
|
25
|
+
npm install typeorm
|
|
26
|
+
npm install reflect-metadata
|
|
27
|
+
npm install @types/node --save-dev
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Core concepts
|
|
31
|
+
- **Entities**: classes decorated with `@Entity()` whose properties (`@Column`, `@PrimaryGeneratedColumn`) map to table columns.
|
|
32
|
+
- **DataSource**: the connection/configuration object you initialize before running any queries.
|
|
33
|
+
- **Repositories & EntityManager**: APIs for CRUD on entities; the Data Mapper pattern.
|
|
34
|
+
- **Active Record vs Data Mapper**: choose entity methods (Active Record) or repositories (Data Mapper) per project style.
|
|
35
|
+
- **Relations & QueryBuilder**: `@OneToMany`/`@ManyToOne` etc. for associations; `createQueryBuilder` for complex SQL.
|
|
36
|
+
- **Migrations**: schema versioning generated and run via the TypeORM CLI.
|
|
37
|
+
|
|
38
|
+
## Best practices
|
|
39
|
+
- Import `reflect-metadata` once at app startup (a global location) as the docs require for decorators to work.
|
|
40
|
+
- Initialize a single `DataSource` and reuse it across the app rather than reconnecting per request.
|
|
41
|
+
- Prefer explicit migrations over `synchronize: true` in production to avoid unintended schema changes (per docs).
|
|
42
|
+
- Use `QueryBuilder` for complex queries and to control joins and selected columns.
|
|
43
|
+
|
|
44
|
+
## Common pitfalls
|
|
45
|
+
- Forgetting to import `reflect-metadata` or enable `experimentalDecorators`/`emitDecoratorMetadata` in tsconfig → decorators silently fail at runtime.
|
|
46
|
+
- Leaving `synchronize: true` on in production → can drop or alter columns unexpectedly; use migrations instead.
|
|
47
|
+
|
|
48
|
+
## Examples
|
|
49
|
+
```ts
|
|
50
|
+
import 'reflect-metadata'
|
|
51
|
+
import { Entity, PrimaryGeneratedColumn, Column, DataSource } from 'typeorm'
|
|
52
|
+
|
|
53
|
+
@Entity()
|
|
54
|
+
class User {
|
|
55
|
+
@PrimaryGeneratedColumn() id!: number
|
|
56
|
+
@Column() name!: string
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const ds = new DataSource({ type: 'postgres', url: process.env.DB_URL, entities: [User] })
|
|
60
|
+
await ds.initialize()
|
|
61
|
+
await ds.getRepository(User).save({ name: 'Ada' })
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Further reading
|
|
65
|
+
- https://typeorm.io/docs/entity/entities/ — entity reference
|
|
66
|
+
- https://typeorm.io/docs/advanced-topics/migrations/ — migrations guide
|
|
67
|
+
|
|
68
|
+
## Related skills
|
|
69
|
+
- ../prisma — schema-DSL ORM alternative
|
|
70
|
+
- ../sequelize — mature JS/TS ORM alternative
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bullmq
|
|
3
|
+
description: Redis-backed distributed job queue for Node.js; consult when adding background jobs, retries, delays, or scheduled work to a Node service.
|
|
4
|
+
domain: stack
|
|
5
|
+
category: queue
|
|
6
|
+
tags: [bullmq, queue, jobs, nodejs, redis, background-jobs]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://docs.bullmq.io/
|
|
9
|
+
- https://github.com/taskforcesh/bullmq
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# BullMQ
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
BullMQ is a fast, Redis-backed distributed queue for Node.js (with Python, Rust, and other ports) used to offload work to background workers: emails, image processing, webhooks, scheduled jobs. It provides retries, delays, priorities, rate limiting, and parent-child job dependencies with atomic, Lua-backed operations. Read this when a Node service needs reliable background processing instead of doing work inside the request cycle.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Docs: https://docs.bullmq.io/
|
|
20
|
+
- Repo: https://github.com/taskforcesh/bullmq
|
|
21
|
+
- Install / quick start: https://docs.bullmq.io/readme-1
|
|
22
|
+
|
|
23
|
+
## Install / setup
|
|
24
|
+
```bash
|
|
25
|
+
npm install bullmq
|
|
26
|
+
```
|
|
27
|
+
Requires a running Redis instance (the examples assume a local Redis on `localhost:6379`).
|
|
28
|
+
|
|
29
|
+
## Core concepts
|
|
30
|
+
- **Queue**: a named queue you add jobs to (`new Queue('foo')`); producers enqueue, consumers process independently.
|
|
31
|
+
- **Worker**: a process that pulls jobs from a queue and runs a processor function; multiple workers scale horizontally across the same queue.
|
|
32
|
+
- **Job**: a unit of work with data and options (attempts, backoff, delay, priority); BullMQ tracks its lifecycle (waiting, active, completed, failed).
|
|
33
|
+
- **Connection**: BullMQ talks to Redis via ioredis; workers require `maxRetriesPerRequest: null` on the connection.
|
|
34
|
+
- **Flows (parent-child)**: jobs can depend on child jobs and only run after children complete, enabling fan-out/fan-in pipelines.
|
|
35
|
+
- **QueueEvents**: a separate listener stream for observing job state changes (completed, failed, progress) across processes.
|
|
36
|
+
|
|
37
|
+
## Best practices
|
|
38
|
+
- Make job processors idempotent — BullMQ targets reliable delivery, and retries/replays mean the same job may run more than once.
|
|
39
|
+
- Configure `attempts` and `backoff` per job so transient failures retry with exponential delay instead of failing permanently.
|
|
40
|
+
- Reuse a single Redis connection (ioredis instance) across queues/workers where appropriate rather than opening one per object.
|
|
41
|
+
- Run dedicated worker processes separate from your web/API process so heavy jobs do not compete with request handling.
|
|
42
|
+
|
|
43
|
+
## Common pitfalls
|
|
44
|
+
- Creating the Worker connection without `maxRetriesPerRequest: null` → BullMQ requires this and will warn/error otherwise.
|
|
45
|
+
- Doing long blocking work in a processor without concurrency or rate limits → set worker `concurrency` and rate limiting to control throughput against downstream systems.
|
|
46
|
+
- Assuming jobs run in the web process → without a separate Worker actually consuming the queue, jobs sit in "waiting" forever.
|
|
47
|
+
|
|
48
|
+
## Examples
|
|
49
|
+
```typescript
|
|
50
|
+
import { Queue, Worker } from 'bullmq';
|
|
51
|
+
import IORedis from 'ioredis';
|
|
52
|
+
|
|
53
|
+
const connection = new IORedis({ maxRetriesPerRequest: null });
|
|
54
|
+
|
|
55
|
+
const myQueue = new Queue('foo', { connection });
|
|
56
|
+
await myQueue.add('myJobName', { foo: 'bar' }, { attempts: 3, backoff: 5000 });
|
|
57
|
+
|
|
58
|
+
new Worker('foo', async job => {
|
|
59
|
+
console.log(job.data);
|
|
60
|
+
}, { connection });
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Further reading
|
|
64
|
+
- https://docs.bullmq.io/guide/workers — workers, concurrency, rate limiting
|
|
65
|
+
- https://docs.bullmq.io/guide/flows — parent-child job flows
|
|
66
|
+
|
|
67
|
+
## Related skills
|
|
68
|
+
- ../redis — the data store BullMQ runs on; understand TTLs and persistence
|
|
69
|
+
- ../celery — equivalent task-queue pattern for Python services
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: celery
|
|
3
|
+
description: Distributed task queue for Python that runs background jobs via a broker (Redis/RabbitMQ); consult for async tasks, scheduling, and worker fan-out.
|
|
4
|
+
domain: stack
|
|
5
|
+
category: queue
|
|
6
|
+
tags: [celery, python, task-queue, background-jobs, redis, rabbitmq]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://docs.celeryq.dev/
|
|
9
|
+
- https://github.com/celery/celery
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Celery
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
Celery is a distributed task queue for Python that distributes work across processes and machines using a message broker (commonly RabbitMQ or Redis). It runs background and scheduled jobs outside the request cycle and integrates with Django, Flask, and FastAPI. Read this when a Python service needs async tasks, periodic jobs, retries, or horizontal worker scaling.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Docs: https://docs.celeryq.dev/
|
|
20
|
+
- Repo: https://github.com/celery/celery
|
|
21
|
+
- Install: https://docs.celeryq.dev/en/stable/getting-started/introduction.html#installation
|
|
22
|
+
|
|
23
|
+
## Install / setup
|
|
24
|
+
```bash
|
|
25
|
+
pip install -U Celery
|
|
26
|
+
```
|
|
27
|
+
Celery also needs a broker (e.g. RabbitMQ or Redis) running; install broker extras with bundles like `pip install "celery[redis]"`.
|
|
28
|
+
|
|
29
|
+
## Core concepts
|
|
30
|
+
- **Task**: a unit of work defined with the `@app.task` decorator; called asynchronously with `.delay()` / `.apply_async()`.
|
|
31
|
+
- **Broker**: the message transport (RabbitMQ, Redis, SQS) that carries tasks from producers to workers; required to run Celery.
|
|
32
|
+
- **Worker**: a process started with `celery -A <app> worker` that consumes and executes queued tasks.
|
|
33
|
+
- **Result backend**: optional store (Redis, DB, etc.) that holds task return values and state when you need to retrieve results.
|
|
34
|
+
- **Beat (scheduler)**: a separate process that sends scheduled/periodic tasks to the broker on a cron-like schedule.
|
|
35
|
+
- **Routing & queues**: tasks can be routed to named queues so workers can specialize and scale independently.
|
|
36
|
+
|
|
37
|
+
## Best practices
|
|
38
|
+
- Make tasks idempotent and keep them small/focused, since Celery may retry or redeliver work.
|
|
39
|
+
- Set explicit `acks_late` / time limits and retry policies so a crashed worker re-queues its task instead of losing it.
|
|
40
|
+
- Use a dedicated result backend only when you actually need results; otherwise disabling it reduces overhead.
|
|
41
|
+
- Run Celery Beat as a single instance to avoid duplicate scheduled-task dispatch, and route heavy tasks to dedicated queues/workers.
|
|
42
|
+
|
|
43
|
+
## Common pitfalls
|
|
44
|
+
- Calling a task function directly (`add(2, 2)`) instead of `add.delay(2, 2)` → it runs synchronously in-process and never reaches a worker.
|
|
45
|
+
- Forgetting to start a worker or broker → tasks queue (or fail to enqueue) and never execute.
|
|
46
|
+
- Passing large or non-serializable objects as task arguments → arguments must serialize through the broker; pass IDs and reload inside the task.
|
|
47
|
+
|
|
48
|
+
## Examples
|
|
49
|
+
```python
|
|
50
|
+
from celery import Celery
|
|
51
|
+
|
|
52
|
+
app = Celery('tasks', broker='pyamqp://guest@localhost//')
|
|
53
|
+
|
|
54
|
+
@app.task
|
|
55
|
+
def add(x, y):
|
|
56
|
+
return x + y
|
|
57
|
+
```
|
|
58
|
+
```bash
|
|
59
|
+
celery -A tasks worker --loglevel=INFO
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Further reading
|
|
63
|
+
- https://docs.celeryq.dev/en/stable/getting-started/first-steps-with-celery.html — first steps tutorial
|
|
64
|
+
- https://docs.celeryq.dev/en/stable/userguide/periodic-tasks.html — periodic tasks with Beat
|
|
65
|
+
|
|
66
|
+
## Related skills
|
|
67
|
+
- ../redis — common Celery broker/result backend
|
|
68
|
+
- ../rabbitmq — default, fully-featured Celery broker
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: kafka
|
|
3
|
+
description: Distributed event streaming platform with durable, replayable logs; consult for high-throughput data pipelines, event sourcing, and stream processing.
|
|
4
|
+
domain: stack
|
|
5
|
+
category: queue
|
|
6
|
+
tags: [kafka, streaming, events, log, pubsub, distributed]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://kafka.apache.org/documentation/
|
|
9
|
+
- https://github.com/apache/kafka
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Apache Kafka
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
Apache Kafka is an open-source distributed event streaming platform used for high-performance data pipelines, streaming analytics, data integration, and mission-critical applications. Unlike a traditional broker, Kafka stores events in durable, partitioned, append-only logs that consumers replay at their own offset. Read this when you need high-throughput event ingestion, event sourcing, or stream processing across many consumers.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Docs: https://kafka.apache.org/documentation/
|
|
20
|
+
- Repo: https://github.com/apache/kafka
|
|
21
|
+
- Install / quickstart: https://kafka.apache.org/quickstart
|
|
22
|
+
|
|
23
|
+
## Install / setup
|
|
24
|
+
```bash
|
|
25
|
+
tar -xzf kafka_2.13-4.3.0.tgz
|
|
26
|
+
cd kafka_2.13-4.3.0
|
|
27
|
+
KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"
|
|
28
|
+
bin/kafka-storage.sh format --standalone -t $KAFKA_CLUSTER_ID -c config/server.properties
|
|
29
|
+
bin/kafka-server-start.sh config/server.properties
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Core concepts
|
|
33
|
+
- **Topic**: a named, append-only log of events that producers write to and consumers read from.
|
|
34
|
+
- **Partition**: topics are split into partitions for parallelism and ordering; order is guaranteed only within a partition.
|
|
35
|
+
- **Offset**: each consumer tracks its position (offset) per partition, so events can be replayed and consumers progress independently.
|
|
36
|
+
- **Producer / Consumer**: producers publish records (optionally keyed for partition routing); consumers read them.
|
|
37
|
+
- **Consumer group**: consumers in a group share partitions so each partition is processed by exactly one member, enabling horizontal scaling.
|
|
38
|
+
- **Retention + replication**: events are retained for a configured time/size (not deleted on read) and replicated across brokers for durability.
|
|
39
|
+
- **KRaft**: modern Kafka manages metadata internally via KRaft, removing the legacy ZooKeeper dependency.
|
|
40
|
+
|
|
41
|
+
## Best practices
|
|
42
|
+
- Choose partition counts up front based on target throughput and consumer parallelism — it dictates how many consumers can work in parallel.
|
|
43
|
+
- Use a meaningful record key when ordering per entity matters, since all records with the same key land in the same partition.
|
|
44
|
+
- Set retention deliberately; Kafka keeps events until retention expires, so consumers can replay and recover from offsets.
|
|
45
|
+
- Run with replication (replication factor >= 3 in production) so partition leaders can fail over without data loss.
|
|
46
|
+
|
|
47
|
+
## Common pitfalls
|
|
48
|
+
- Treating Kafka like a queue where reading deletes the message → it does not; messages persist per retention and consumers advance offsets instead.
|
|
49
|
+
- Expecting global ordering across a topic → ordering holds only within a partition; cross-partition order is not guaranteed.
|
|
50
|
+
- Adding too many or too few partitions → too few caps parallelism; too many strains the cluster. Size them to throughput needs.
|
|
51
|
+
|
|
52
|
+
## Examples
|
|
53
|
+
```bash
|
|
54
|
+
# produce events to a topic
|
|
55
|
+
bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server localhost:9092
|
|
56
|
+
# consume from the beginning
|
|
57
|
+
bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server localhost:9092
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Further reading
|
|
61
|
+
- https://kafka.apache.org/documentation/#design — design and storage internals
|
|
62
|
+
- https://kafka.apache.org/documentation/streams/ — Kafka Streams processing library
|
|
63
|
+
|
|
64
|
+
## Related skills
|
|
65
|
+
- ../rabbitmq — broker-style alternative when you need routing and per-message acks
|
|
66
|
+
- ../nats — lighter-weight streaming/messaging system (JetStream) for similar use cases
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: nats
|
|
3
|
+
description: Lightweight high-performance messaging system with pub/sub and JetStream persistence; consult for cloud-native, edge, and microservice messaging.
|
|
4
|
+
domain: stack
|
|
5
|
+
category: queue
|
|
6
|
+
tags: [nats, messaging, pubsub, jetstream, cloud-native, streaming]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://docs.nats.io/
|
|
9
|
+
- https://github.com/nats-io/nats-server
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# NATS
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
NATS is a simple, secure, high-performance messaging system for cloud-native applications, edge devices, and microservices, and is a CNCF project. Core NATS provides fast at-most-once pub/sub and request-reply; the JetStream layer adds persistence, replay, and stronger delivery guarantees plus key/value and object stores. Read this when you want lightweight, low-latency messaging with optional durability without operating a heavier broker.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Docs: https://docs.nats.io/
|
|
20
|
+
- Repo: https://github.com/nats-io/nats-server
|
|
21
|
+
- Install: https://docs.nats.io/running-a-nats-service/introduction/installation
|
|
22
|
+
|
|
23
|
+
## Install / setup
|
|
24
|
+
```bash
|
|
25
|
+
docker pull nats:latest
|
|
26
|
+
docker run -p 4222:4222 -ti nats:latest
|
|
27
|
+
```
|
|
28
|
+
```bash
|
|
29
|
+
# macOS (Homebrew)
|
|
30
|
+
brew install nats-server
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Core concepts
|
|
34
|
+
- **Subjects**: hierarchical, dot-delimited addresses (e.g. `orders.us.new`) that messages are published to and subscribed against, with `*` and `>` wildcards.
|
|
35
|
+
- **Publish / Subscribe**: many subscribers can receive messages on a subject; Core NATS delivery is at-most-once and fire-and-forget.
|
|
36
|
+
- **Request-Reply**: built-in RPC pattern where a publisher gets a direct reply on a temporary inbox subject.
|
|
37
|
+
- **Queue groups**: subscribers sharing a queue group load-balance messages so each message goes to one member — work-queue semantics over pub/sub.
|
|
38
|
+
- **JetStream**: the persistence engine adding streams, durable consumers, replay, and up to exactly-once delivery on top of Core NATS.
|
|
39
|
+
- **KV and Object stores**: higher-level abstractions built on JetStream for key/value and large-object storage.
|
|
40
|
+
|
|
41
|
+
## Best practices
|
|
42
|
+
- Design subject hierarchies intentionally and use wildcards for flexible subscriptions rather than hard-coding many concrete subjects.
|
|
43
|
+
- Use queue groups for scalable work distribution so adding subscribers spreads load automatically.
|
|
44
|
+
- Use JetStream (not Core NATS) whenever you need messages to survive subscriber downtime, replay, or acknowledgements.
|
|
45
|
+
- Run a clustered nats-server for high availability rather than a single node in production.
|
|
46
|
+
|
|
47
|
+
## Common pitfalls
|
|
48
|
+
- Expecting Core NATS to retain messages → it is at-most-once and drops messages with no active subscriber; use JetStream for persistence.
|
|
49
|
+
- Forgetting to ack JetStream messages → unacked messages are redelivered per the consumer's ack policy, causing duplicate processing.
|
|
50
|
+
- Overly broad `>` wildcard subscriptions → can flood a subscriber with far more traffic than intended.
|
|
51
|
+
|
|
52
|
+
## Examples
|
|
53
|
+
```bash
|
|
54
|
+
# subscribe to a subject (NATS CLI)
|
|
55
|
+
nats sub "orders.>"
|
|
56
|
+
# publish a message
|
|
57
|
+
nats pub orders.us.new '{"id":99}'
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Further reading
|
|
61
|
+
- https://docs.nats.io/nats-concepts/jetstream — JetStream persistence concepts
|
|
62
|
+
- https://docs.nats.io/nats-concepts/core-nats — Core NATS messaging patterns
|
|
63
|
+
|
|
64
|
+
## Related skills
|
|
65
|
+
- ../kafka — log-based streaming for very high-throughput, replay-heavy pipelines
|
|
66
|
+
- ../rabbitmq — broker with rich routing when you need protocol breadth and per-message acks
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rabbitmq
|
|
3
|
+
description: Multi-protocol message broker (AMQP/MQTT/STOMP) for reliable async messaging; consult when decoupling services with durable queues and routing.
|
|
4
|
+
domain: stack
|
|
5
|
+
category: queue
|
|
6
|
+
tags: [rabbitmq, message-broker, amqp, queue, messaging, pubsub]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://www.rabbitmq.com/docs
|
|
9
|
+
- https://github.com/rabbitmq/rabbitmq-server
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# RabbitMQ
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
RabbitMQ is a feature-rich, multi-protocol messaging and streaming broker that decouples producers from consumers with durable queues and flexible routing. It speaks AMQP 0-9-1/1.0, MQTT, STOMP, and their WebSocket variants, making it a general-purpose broker for async workflows, task distribution, and event fan-out. Read this when services need reliable, acknowledged message delivery with routing logic rather than a simple in-memory list.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Docs: https://www.rabbitmq.com/docs
|
|
20
|
+
- Repo: https://github.com/rabbitmq/rabbitmq-server
|
|
21
|
+
- Install / download: https://www.rabbitmq.com/docs/download
|
|
22
|
+
|
|
23
|
+
## Install / setup
|
|
24
|
+
```bash
|
|
25
|
+
docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:4-management
|
|
26
|
+
```
|
|
27
|
+
Port 5672 is AMQP; 15672 serves the management UI.
|
|
28
|
+
|
|
29
|
+
## Core concepts
|
|
30
|
+
- **Producer / Consumer**: producers publish messages; consumers subscribe and process them — they never communicate directly.
|
|
31
|
+
- **Exchange**: receives published messages and routes them to queues based on type (direct, topic, fanout, headers) and bindings.
|
|
32
|
+
- **Queue**: an ordered buffer that holds messages until a consumer acknowledges them; can be durable to survive broker restarts.
|
|
33
|
+
- **Binding + routing key**: rules connecting exchanges to queues; the routing key plus exchange type determines where a message lands.
|
|
34
|
+
- **Acknowledgements**: consumers ack messages after processing; unacked messages are redelivered if the consumer dies, ensuring at-least-once delivery.
|
|
35
|
+
- **Quorum queues**: the recommended replicated, durable queue type for data safety in clustered deployments.
|
|
36
|
+
|
|
37
|
+
## Best practices
|
|
38
|
+
- Use manual acknowledgements and only ack after successful processing so crashes trigger redelivery instead of message loss.
|
|
39
|
+
- Declare queues and exchanges as durable and publish persistent messages when you need them to survive a broker restart.
|
|
40
|
+
- Prefer quorum queues over classic mirrored queues for replicated, highly-available workloads (per RabbitMQ docs).
|
|
41
|
+
- Set prefetch (QoS) limits so a single consumer is not flooded with unacked messages and work spreads across consumers.
|
|
42
|
+
|
|
43
|
+
## Common pitfalls
|
|
44
|
+
- Auto-ack mode → messages are removed before processing completes, so a crash silently loses them; use manual ack.
|
|
45
|
+
- Non-durable queues / non-persistent messages → everything is lost on broker restart; mark both durable when persistence matters.
|
|
46
|
+
- Unbounded queues without consumers or limits → memory/disk pressure can trigger flow control and block publishers; monitor depth and apply limits.
|
|
47
|
+
|
|
48
|
+
## Examples
|
|
49
|
+
```python
|
|
50
|
+
import pika
|
|
51
|
+
conn = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
|
|
52
|
+
ch = conn.channel()
|
|
53
|
+
ch.queue_declare(queue='tasks', durable=True)
|
|
54
|
+
ch.basic_publish(exchange='', routing_key='tasks', body='hello',
|
|
55
|
+
properties=pika.BasicProperties(delivery_mode=2)) # persistent
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Further reading
|
|
59
|
+
- https://www.rabbitmq.com/tutorials — official protocol/usage tutorials
|
|
60
|
+
- https://www.rabbitmq.com/docs/quorum-queues — quorum queue reference
|
|
61
|
+
|
|
62
|
+
## Related skills
|
|
63
|
+
- ../kafka — log-based streaming alternative for high-throughput event pipelines
|
|
64
|
+
- ../celery — Python task queue that commonly uses RabbitMQ as its broker
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: redis
|
|
3
|
+
description: In-memory data store used as a cache, message broker, and queue backend; consult when adding caching, pub/sub, or queue infrastructure.
|
|
4
|
+
domain: stack
|
|
5
|
+
category: queue
|
|
6
|
+
tags: [redis, cache, queue, pubsub, streams, in-memory]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://redis.io/docs/latest/develop/
|
|
9
|
+
- https://github.com/redis/redis
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Redis
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
Redis is an in-memory key-value data store used as a cache, data-structure server, message broker, and the backing store for many job-queue libraries. It keeps data in RAM for sub-millisecond access while offering optional persistence. Read this when you need fast caching, pub/sub messaging, rate limiting, or a queue substrate (BullMQ, Celery, Sidekiq all build on Redis).
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Docs: https://redis.io/docs/latest/develop/
|
|
20
|
+
- Repo: https://github.com/redis/redis
|
|
21
|
+
- Install / download: https://redis.io/docs/latest/operate/oss_and_stack/install/install-stack/
|
|
22
|
+
|
|
23
|
+
## Install / setup
|
|
24
|
+
```bash
|
|
25
|
+
# Docker (quickest, only officially supported method on Windows)
|
|
26
|
+
docker run -d --name redis -p 6379:6379 redis
|
|
27
|
+
```
|
|
28
|
+
```bash
|
|
29
|
+
# macOS (Homebrew)
|
|
30
|
+
brew tap redis/redis
|
|
31
|
+
brew install --cask redis
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Core concepts
|
|
35
|
+
- **Data types**: strings, hashes, lists, sets, sorted sets, streams, bitmaps, hyperloglogs, and geospatial indexes — choosing the right type is the primary modeling decision.
|
|
36
|
+
- **Single-threaded command execution**: commands run sequentially on one main thread, so each command is atomic; long-running commands block all clients.
|
|
37
|
+
- **Key expiration / eviction**: keys can be given a TTL (`EXPIRE`/`SET ... EX`); when memory fills, the configured `maxmemory-policy` (e.g. `allkeys-lru`) decides what to evict — central to cache behavior.
|
|
38
|
+
- **Pub/Sub and Streams**: Pub/Sub is fire-and-forget fan-out; Streams are append-only logs with consumer groups for durable, replayable queue semantics.
|
|
39
|
+
- **Persistence (RDB + AOF)**: RDB snapshots and the append-only file give durability; Redis is in-memory first, so persistence is a configurable trade-off, not the default guarantee.
|
|
40
|
+
- **Transactions and Lua scripts**: `MULTI`/`EXEC` and server-side Lua scripts run atomically, which is how queue libraries implement reliable multi-key operations.
|
|
41
|
+
|
|
42
|
+
## Best practices
|
|
43
|
+
- Set explicit TTLs on cache keys and choose an eviction policy that matches your workload rather than relying on unbounded growth (see Redis eviction docs).
|
|
44
|
+
- Prefer `SCAN` over `KEYS` in production; `KEYS` blocks the single thread across the whole keyspace.
|
|
45
|
+
- Use pipelining or `MULTI`/Lua to batch related operations and cut round-trips instead of issuing many sequential commands.
|
|
46
|
+
- For durable queues use Streams with consumer groups (acknowledge with `XACK`) rather than plain lists, so unprocessed messages survive consumer crashes.
|
|
47
|
+
|
|
48
|
+
## Common pitfalls
|
|
49
|
+
- Treating Redis as a fully durable primary database → it is in-memory first; enable AOF/RDB and understand the data-loss window, or keep the system of record elsewhere.
|
|
50
|
+
- Running `KEYS *` or large `SMEMBERS`/`HGETALL` on big keys in production → blocks the server; use `SCAN`/cursor-based iteration and avoid giant keys.
|
|
51
|
+
- Forgetting `maxmemory` and eviction policy → Redis can exhaust RAM and start failing writes (or get OOM-killed) under load.
|
|
52
|
+
|
|
53
|
+
## Examples
|
|
54
|
+
```bash
|
|
55
|
+
SET session:42 "user-data" EX 3600 # value with a 1-hour TTL
|
|
56
|
+
INCR page:views # atomic counter
|
|
57
|
+
XADD orders '*' id 99 status new # append to a stream
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Further reading
|
|
61
|
+
- https://redis.io/docs/latest/develop/data-types/ — data type reference
|
|
62
|
+
- https://redis.io/docs/latest/develop/interact/pubsub/ — Pub/Sub guide
|
|
63
|
+
|
|
64
|
+
## Related skills
|
|
65
|
+
- ../bullmq — Redis-backed job queue for Node.js built on these primitives
|
|
66
|
+
- ../celery — Python task queue that can use Redis as its broker
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: beam
|
|
3
|
+
description: The BEAM (Erlang/OTP VM) running Erlang and Elixir — built for massively scalable, fault-tolerant, soft real-time systems. Consult for concurrent/HA services.
|
|
4
|
+
domain: stack
|
|
5
|
+
category: runtime
|
|
6
|
+
tags: [beam, erlang, elixir, otp, concurrency, fault-tolerance]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://www.erlang.org/docs
|
|
9
|
+
- https://github.com/erlang/otp
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# BEAM (Erlang/OTP VM)
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
The BEAM is the virtual machine in Erlang/OTP that executes Erlang and Elixir code. Erlang is designed for building massively scalable soft real-time systems with high-availability requirements. OTP is the runtime system plus a set of libraries and design principles for building robust concurrent applications. Read this when building fault-tolerant, highly concurrent, or distributed services.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Docs: https://www.erlang.org/docs
|
|
20
|
+
- Repo: https://github.com/erlang/otp
|
|
21
|
+
- Install / download: https://www.erlang.org/downloads
|
|
22
|
+
|
|
23
|
+
## Install / setup
|
|
24
|
+
Install via a package manager (commands shown on the official downloads page):
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
brew install erlang # macOS (Homebrew)
|
|
28
|
+
apt-get install erlang # Ubuntu/Debian
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Or build from source per the official build instructions:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
./configure && make && make install
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Verify the install by starting the shell with `erl` (the downloads page also lists version managers such as kerl, asdf, and mise).
|
|
38
|
+
|
|
39
|
+
## Core concepts
|
|
40
|
+
- Lightweight processes: BEAM schedules huge numbers of isolated processes that share no memory and communicate by message passing.
|
|
41
|
+
- "Let it crash": processes fail fast and are restarted by supervisors rather than defensively handling every error.
|
|
42
|
+
- OTP behaviours (`gen_server`, supervisors, applications) encode proven patterns for concurrent, supervised systems.
|
|
43
|
+
- Preemptive per-process scheduling gives soft real-time, low-latency responsiveness under load.
|
|
44
|
+
- Built-in distribution lets nodes connect and processes communicate across machines transparently.
|
|
45
|
+
- Hot code loading allows updating running systems without full restarts.
|
|
46
|
+
|
|
47
|
+
## Best practices
|
|
48
|
+
- Structure applications around supervision trees so failures are isolated and recovered automatically.
|
|
49
|
+
- Build stateful concurrency on OTP behaviours (e.g. `gen_server`) rather than ad-hoc process loops.
|
|
50
|
+
- Keep processes small and single-purpose to maximize isolation and fault containment.
|
|
51
|
+
- Prefer immutable message passing over shared state, in line with the actor model.
|
|
52
|
+
|
|
53
|
+
## Common pitfalls
|
|
54
|
+
- Writing defensive try/catch everywhere instead of leveraging supervisors → adopt "let it crash" with supervision.
|
|
55
|
+
- Building bespoke process plumbing instead of OTP behaviours → reuse `gen_server`/supervisor patterns.
|
|
56
|
+
- Large messages copied between processes → keep messages small since processes do not share memory.
|
|
57
|
+
|
|
58
|
+
## Examples
|
|
59
|
+
```erlang
|
|
60
|
+
% Spawn a process and send it a message
|
|
61
|
+
Pid = spawn(fun() ->
|
|
62
|
+
receive Msg -> io:format("got: ~p~n", [Msg]) end
|
|
63
|
+
end),
|
|
64
|
+
Pid ! hello.
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Further reading
|
|
68
|
+
- OTP design principles: https://www.erlang.org/doc/system/design_principles.html
|
|
69
|
+
- Documentation hub: https://www.erlang.org/docs
|
|
70
|
+
|
|
71
|
+
## Related skills
|
|
72
|
+
- ../jvm — alternative VM for concurrent, long-running services
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bun
|
|
3
|
+
description: Bun — fast all-in-one JS/TS runtime, bundler, test runner, and package manager; a Node.js drop-in. Consult for fast JS/TS dev and tooling.
|
|
4
|
+
domain: stack
|
|
5
|
+
category: runtime
|
|
6
|
+
tags: [bun, javascript, typescript, runtime, bundler, package-manager]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://bun.com/docs
|
|
9
|
+
- https://github.com/oven-sh/bun
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Bun
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
Bun is an all-in-one toolkit for JavaScript and TypeScript apps, designed as a drop-in replacement for Node.js. It ships as a single dependency-free executable that bundles a runtime, package manager, bundler, and test runner. Written in Zig and powered by JavaScriptCore, it targets fast startup and install times. Read this when you want a single fast tool covering run, install, build, and test.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Docs: https://bun.com/docs
|
|
20
|
+
- Repo: https://github.com/oven-sh/bun
|
|
21
|
+
- Install / download: https://bun.com/docs/installation
|
|
22
|
+
|
|
23
|
+
## Install / setup
|
|
24
|
+
macOS & Linux (from the official installation page):
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
curl -fsSL https://bun.com/install | bash
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Windows (PowerShell):
|
|
31
|
+
|
|
32
|
+
```powershell
|
|
33
|
+
powershell -c "irm bun.sh/install.ps1|iex"
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Verify the install:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
bun --version
|
|
40
|
+
bun --revision
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Core concepts
|
|
44
|
+
- Single executable provides runtime, package manager (`bun install`), bundler (`bun build`), and test runner (`bun test`).
|
|
45
|
+
- Native TypeScript and JSX support — run `.ts`/`.tsx` directly without a separate transpile step.
|
|
46
|
+
- Node.js compatibility layer aims for drop-in replacement of `node`, including many built-in modules and npm packages.
|
|
47
|
+
- Bun-specific APIs (e.g. `Bun.serve`, `Bun.file`) offer optimized I/O and HTTP serving.
|
|
48
|
+
- `bun.lockb`/lockfile and a fast, npm-compatible install resolve dependencies from the npm registry.
|
|
49
|
+
- The binary upgrades itself via `bun upgrade`.
|
|
50
|
+
|
|
51
|
+
## Best practices
|
|
52
|
+
- Verify after install and add `~/.bun/bin` to `PATH` if `bun` is not found (per the installation docs).
|
|
53
|
+
- Use `bun install` to leverage the integrated, fast package manager and its lockfile.
|
|
54
|
+
- Pin to stable releases; canary builds are untested and upload crash reports (installation docs).
|
|
55
|
+
- Run TypeScript directly with `bun run` instead of adding a separate transpiler step.
|
|
56
|
+
|
|
57
|
+
## Common pitfalls
|
|
58
|
+
- Assuming 100% Node.js parity → check the Node compatibility docs for unsupported APIs before migrating.
|
|
59
|
+
- On Linux, missing `unzip` breaks the install script → install `unzip` first (installation docs).
|
|
60
|
+
- Using a baseline build on a modern CPU unnecessarily → only use baseline builds when you hit "Illegal Instruction" errors.
|
|
61
|
+
|
|
62
|
+
## Examples
|
|
63
|
+
```ts
|
|
64
|
+
const server = Bun.serve({
|
|
65
|
+
port: 3000,
|
|
66
|
+
fetch(req) {
|
|
67
|
+
return new Response('Hello from Bun');
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
console.log(`listening on ${server.url}`);
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Further reading
|
|
75
|
+
- Documentation index: https://bun.com/docs
|
|
76
|
+
- Runtime / Node compatibility: https://bun.com/docs/runtime/nodejs-apis
|
|
77
|
+
|
|
78
|
+
## Related skills
|
|
79
|
+
- ../node — the runtime Bun aims to replace
|
|
80
|
+
- ../deno — alternative secure JS/TS runtime
|