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,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: postgresql
|
|
3
|
+
description: Robust open-source relational database with strong SQL, ACID, and extensibility; consult for schema design, transactions, and indexing.
|
|
4
|
+
domain: stack
|
|
5
|
+
category: database
|
|
6
|
+
tags: [postgresql, sql, rdbms, relational, acid]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://www.postgresql.org/docs/
|
|
9
|
+
- https://github.com/postgres/postgres
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# PostgreSQL
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
PostgreSQL is a mature, open-source object-relational database emphasizing standards compliance, ACID transactions, and extensibility. Read this when choosing a relational store, designing schemas, writing SQL, or tuning indexes and queries for a Postgres backend.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Docs: https://www.postgresql.org/docs/
|
|
20
|
+
- Repo (official GitHub mirror; development uses the project's own git): https://github.com/postgres/postgres
|
|
21
|
+
- Install / download: https://www.postgresql.org/download/
|
|
22
|
+
|
|
23
|
+
## Install / setup
|
|
24
|
+
Ubuntu, via the PostgreSQL Apt repository (from postgresql.org/download/linux/ubuntu/):
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
sudo apt install -y postgresql-common
|
|
28
|
+
sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh
|
|
29
|
+
sudo apt update
|
|
30
|
+
sudo apt install postgresql-18
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
The simplest path (distribution-included package) is:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
apt install postgresql
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Core concepts
|
|
40
|
+
- Relational model with ACID transactions; everything runs inside a transaction (explicit or implicit).
|
|
41
|
+
- Rich type system: beyond standard SQL types, native JSON/JSONB, arrays, ranges, and user-defined types.
|
|
42
|
+
- MVCC (Multi-Version Concurrency Control): readers don't block writers and vice versa; old row versions are cleaned by VACUUM.
|
|
43
|
+
- Indexes: B-tree (default), plus GIN, GiST, BRIN, and Hash for specialized access patterns (e.g., GIN for JSONB/full-text).
|
|
44
|
+
- Extensions: functionality like PostGIS or pg_trgm loaded via `CREATE EXTENSION`.
|
|
45
|
+
- Roles and privileges: a unified role system handles both users and groups.
|
|
46
|
+
- Schemas: namespaces within a database for organizing objects.
|
|
47
|
+
|
|
48
|
+
## Best practices
|
|
49
|
+
- Use the appropriate index type for the query; verify plans with `EXPLAIN ANALYZE` before adding indexes blindly.
|
|
50
|
+
- Prefer `JSONB` over `JSON` when you need to index or query inside documents (binary form supports GIN indexing).
|
|
51
|
+
- Let autovacuum run, and monitor for table bloat on high-churn tables (see docs on routine vacuuming).
|
|
52
|
+
- Use connection pooling for high-concurrency apps; each connection is a backend process.
|
|
53
|
+
- Define explicit constraints (NOT NULL, FOREIGN KEY, CHECK, UNIQUE) so the database enforces integrity.
|
|
54
|
+
|
|
55
|
+
## Common pitfalls
|
|
56
|
+
- Skipping `EXPLAIN ANALYZE` and assuming an index is used → confirm the planner actually chooses it.
|
|
57
|
+
- Treating `JSON` and `JSONB` as interchangeable → `JSON` preserves text and is not efficiently indexable; use `JSONB` for querying.
|
|
58
|
+
- Ignoring VACUUM/autovacuum on write-heavy tables → leads to bloat and transaction ID wraparound risk.
|
|
59
|
+
- Opening one DB connection per request without pooling → process exhaustion under load.
|
|
60
|
+
|
|
61
|
+
## Examples
|
|
62
|
+
```sql
|
|
63
|
+
CREATE TABLE users (
|
|
64
|
+
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
|
|
65
|
+
email TEXT NOT NULL UNIQUE,
|
|
66
|
+
profile JSONB NOT NULL DEFAULT '{}',
|
|
67
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
CREATE INDEX idx_users_profile ON users USING GIN (profile);
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Further reading
|
|
74
|
+
- Indexes: https://www.postgresql.org/docs/current/indexes.html
|
|
75
|
+
- Routine vacuuming: https://www.postgresql.org/docs/current/routine-vacuuming.html
|
|
76
|
+
|
|
77
|
+
## Related skills
|
|
78
|
+
- ../mysql — alternative open-source RDBMS
|
|
79
|
+
- ../supabase — hosted Postgres with auth/storage/realtime
|
|
80
|
+
- ../neon — serverless Postgres
|
|
81
|
+
- ../cockroachdb — distributed, Postgres-wire-compatible SQL
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: redis
|
|
3
|
+
description: In-memory data structure store for caching, queues, sessions, and pub/sub; canonical entry for using Redis as cache or fast key-value store.
|
|
4
|
+
domain: stack
|
|
5
|
+
category: database
|
|
6
|
+
tags: [redis, cache, in-memory, key-value, pubsub]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://redis.io/docs/latest/
|
|
9
|
+
- https://github.com/redis/redis
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Redis
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
Redis is an in-memory data structure store used as a cache, key-value database, message broker, and data structure server. Read this as the canonical entry point when adding caching, session storage, rate limiting, queues, or pub/sub to an application.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Docs: https://redis.io/docs/latest/
|
|
20
|
+
- Repo (official; tri-licensed RSALv2/SSPLv1/AGPLv3 for v8.0+): https://github.com/redis/redis
|
|
21
|
+
- Install guide: https://redis.io/docs/latest/operate/oss_and_stack/install/install-stack/
|
|
22
|
+
|
|
23
|
+
## Install / setup
|
|
24
|
+
Run via Docker (works on all platforms, per the official install docs):
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
docker run -d --name redis -p 6379:6379 redis
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
On Ubuntu/Debian via the official APT repository:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
sudo apt-get install lsb-release curl gpg
|
|
34
|
+
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
|
|
35
|
+
sudo chmod 644 /usr/share/keyrings/redis-archive-keyring.gpg
|
|
36
|
+
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
|
|
37
|
+
sudo apt-get update
|
|
38
|
+
sudo apt-get install redis
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Core concepts
|
|
42
|
+
- In-memory storage: data lives in RAM for sub-millisecond access; persistence is optional.
|
|
43
|
+
- Rich data types: strings, lists, sets, sorted sets, hashes, streams, bitmaps, and more.
|
|
44
|
+
- Key expiration (TTL): set per-key expiry for caches and sessions.
|
|
45
|
+
- Persistence options: RDB snapshots and AOF (append-only file) for durability across restarts.
|
|
46
|
+
- Pub/Sub and Streams: messaging patterns for fan-out and durable, consumer-group-based queues.
|
|
47
|
+
- Atomic operations and transactions (`MULTI`/`EXEC`) plus server-side Lua scripting.
|
|
48
|
+
|
|
49
|
+
## Best practices
|
|
50
|
+
- Set TTLs on cache keys so memory is reclaimed; choose an eviction policy (e.g., `allkeys-lru`) appropriate to a cache.
|
|
51
|
+
- Use the right data type (e.g., sorted sets for leaderboards, streams for queues) rather than serializing blobs.
|
|
52
|
+
- Enable persistence (RDB and/or AOF) if you cannot tolerate losing data on restart; disable it for pure caches.
|
|
53
|
+
- Use pipelining or `MGET`/`MSET` to batch commands and cut round trips.
|
|
54
|
+
- Avoid large single keys and `O(N)` commands (e.g., `KEYS`) on production; use `SCAN` instead.
|
|
55
|
+
|
|
56
|
+
## Common pitfalls
|
|
57
|
+
- Treating Redis as a durable system of record without persistence/replication → data loss on restart or eviction.
|
|
58
|
+
- Running `KEYS *` in production → blocks the server; use `SCAN`.
|
|
59
|
+
- Storing huge values or huge collections in one key → memory spikes and slow operations.
|
|
60
|
+
- Forgetting eviction policy on a cache → out-of-memory errors when `maxmemory` is hit.
|
|
61
|
+
|
|
62
|
+
## Examples
|
|
63
|
+
```bash
|
|
64
|
+
# Cache a value for 60 seconds
|
|
65
|
+
SET session:abc "{...}" EX 60
|
|
66
|
+
|
|
67
|
+
# Leaderboard with a sorted set
|
|
68
|
+
ZADD scores 100 "ada"
|
|
69
|
+
ZREVRANGE scores 0 9 WITHSCORES
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Further reading
|
|
73
|
+
- Data types: https://redis.io/docs/latest/develop/data-types/
|
|
74
|
+
- Persistence: https://redis.io/docs/latest/operate/oss_and_stack/management/persistence/
|
|
75
|
+
|
|
76
|
+
## Related skills
|
|
77
|
+
- ../mongodb — document database for primary storage
|
|
78
|
+
- ../postgresql — relational system of record to pair with a Redis cache
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sqlite
|
|
3
|
+
description: Embedded, serverless, file-based SQL database; consult for local/app storage, on-device data, tests, and zero-config single-file databases.
|
|
4
|
+
domain: stack
|
|
5
|
+
category: database
|
|
6
|
+
tags: [sqlite, sql, embedded, serverless, file-based]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://sqlite.org/docs.html
|
|
9
|
+
- https://github.com/sqlite/sqlite
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# SQLite
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
SQLite is a self-contained, serverless, zero-configuration, transactional SQL database engine where the entire database is stored in a single cross-platform file. Read this when you need embedded storage inside an application, on-device data, test fixtures, or a lightweight single-file database without a server process.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Docs: https://sqlite.org/docs.html
|
|
20
|
+
- Repo (official GitHub mirror; canonical development uses Fossil at sqlite.org/src): https://github.com/sqlite/sqlite
|
|
21
|
+
- Download: https://sqlite.org/download.html
|
|
22
|
+
|
|
23
|
+
## Install / setup
|
|
24
|
+
SQLite is distributed as precompiled command-line tools and as the C "amalgamation" source from the official download page (sqlite.org/download.html). There is no package-manager install command on that page; you download the binary or amalgamation for your platform. On macOS, after downloading the precompiled binary you may need to clear the quarantine attribute:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
xattr -d com.apple.quarantine <prog>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
(Many language runtimes embed SQLite directly, so no separate install is required.)
|
|
31
|
+
|
|
32
|
+
## Core concepts
|
|
33
|
+
- Serverless and embedded: the library links into your application; there is no separate server process.
|
|
34
|
+
- Single-file database: the whole database (tables, indexes, data) lives in one ordinary file.
|
|
35
|
+
- ACID transactions: writes are atomic and durable even across crashes/power loss.
|
|
36
|
+
- Dynamic typing with type affinity: columns have an affinity rather than rigid types.
|
|
37
|
+
- Write-Ahead Logging (WAL): an alternative journaling mode that improves concurrency for readers during writes.
|
|
38
|
+
- Public domain: the source code is dedicated to the public domain.
|
|
39
|
+
|
|
40
|
+
## Best practices
|
|
41
|
+
- Enable WAL mode (`PRAGMA journal_mode=WAL;`) for better read/write concurrency in most applications.
|
|
42
|
+
- Use parameterized queries (bound parameters) to avoid SQL injection and improve plan reuse.
|
|
43
|
+
- Wrap bulk inserts in a single transaction; per-statement autocommit is slow for many rows.
|
|
44
|
+
- Use `STRICT` tables when you want rigid type enforcement instead of type affinity.
|
|
45
|
+
- Keep the database file on local disk, not a network filesystem, to avoid locking issues.
|
|
46
|
+
|
|
47
|
+
## Common pitfalls
|
|
48
|
+
- Assuming rigid typing → SQLite uses type affinity by default; values may be stored as a different type than declared unless you use STRICT tables.
|
|
49
|
+
- Expecting high write concurrency → SQLite serializes writers; it suits single-writer or low-write-concurrency workloads.
|
|
50
|
+
- Running many inserts in autocommit mode → wrap them in a transaction for orders-of-magnitude speedup.
|
|
51
|
+
- Placing the DB file on NFS/network shares → file locking is unreliable there.
|
|
52
|
+
|
|
53
|
+
## Examples
|
|
54
|
+
```sql
|
|
55
|
+
PRAGMA journal_mode = WAL;
|
|
56
|
+
|
|
57
|
+
CREATE TABLE notes (
|
|
58
|
+
id INTEGER PRIMARY KEY,
|
|
59
|
+
body TEXT NOT NULL,
|
|
60
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
61
|
+
) STRICT;
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Further reading
|
|
65
|
+
- Datatypes / type affinity: https://sqlite.org/datatype3.html
|
|
66
|
+
- Write-Ahead Logging: https://sqlite.org/wal.html
|
|
67
|
+
|
|
68
|
+
## Related skills
|
|
69
|
+
- ../postgresql — full client/server RDBMS for larger workloads
|
|
70
|
+
- ../mysql — client/server RDBMS alternative
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: supabase
|
|
3
|
+
description: Open-source Firebase alternative built on Postgres with auth, storage, realtime, and edge functions; consult for full-stack Postgres backends.
|
|
4
|
+
domain: stack
|
|
5
|
+
category: database
|
|
6
|
+
tags: [supabase, postgres, baas, auth, realtime]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://supabase.com/docs
|
|
9
|
+
- https://github.com/supabase/supabase
|
|
10
|
+
verified: 2026-06-16
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Supabase
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
Supabase is an open-source backend-as-a-service that pairs a hosted PostgreSQL database with authentication, file storage, realtime subscriptions, edge functions, and auto-generated APIs. Read this when building a full-stack app that wants Postgres plus auth/storage/realtime without operating each piece yourself.
|
|
17
|
+
|
|
18
|
+
## Official sources
|
|
19
|
+
- Docs: https://supabase.com/docs
|
|
20
|
+
- Repo (official): https://github.com/supabase/supabase
|
|
21
|
+
- Local development: https://supabase.com/docs/guides/local-development
|
|
22
|
+
|
|
23
|
+
## Install / setup
|
|
24
|
+
Install the Supabase CLI and start the local stack (requires a Docker-compatible container runtime), from the official local-development guide:
|
|
25
|
+
|
|
26
|
+
```sh
|
|
27
|
+
npm install supabase --save-dev
|
|
28
|
+
npx supabase init
|
|
29
|
+
npx supabase start
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Alternatively, via Homebrew:
|
|
33
|
+
|
|
34
|
+
```sh
|
|
35
|
+
brew install supabase/tap/supabase
|
|
36
|
+
supabase init
|
|
37
|
+
supabase start
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
The local Supabase Studio is available at http://localhost:54323.
|
|
41
|
+
|
|
42
|
+
## Core concepts
|
|
43
|
+
- Postgres-first: every project is a real PostgreSQL database; you can use full SQL and extensions.
|
|
44
|
+
- Row Level Security (RLS): authorization is enforced in the database via Postgres RLS policies.
|
|
45
|
+
- Auth: built-in user management with email/password, OAuth providers, and JWT-based sessions.
|
|
46
|
+
- Auto-generated APIs: REST (PostgREST) and realtime subscriptions are derived from your schema.
|
|
47
|
+
- Storage: S3-compatible object storage with access controlled by policies.
|
|
48
|
+
- Edge Functions: serverless functions (Deno) for custom server-side logic.
|
|
49
|
+
- Migrations and the CLI: manage schema changes and local-to-prod parity.
|
|
50
|
+
|
|
51
|
+
## Best practices
|
|
52
|
+
- Enable Row Level Security on all tables exposed to clients and write explicit policies; never rely on client-side checks.
|
|
53
|
+
- Develop locally with the CLI and use migrations so schema changes are versioned and reproducible.
|
|
54
|
+
- Keep the `service_role` key server-side only; use the `anon` key (subject to RLS) in clients.
|
|
55
|
+
- Use the database directly for constraints and triggers rather than enforcing integrity in app code.
|
|
56
|
+
- Generate types from your schema for end-to-end type safety in the client.
|
|
57
|
+
|
|
58
|
+
## Common pitfalls
|
|
59
|
+
- Forgetting to enable RLS, leaving tables world-readable/writable via the anon key → enable RLS and add policies.
|
|
60
|
+
- Exposing the `service_role` key in frontend code → it bypasses RLS; keep it secret.
|
|
61
|
+
- Making schema changes only in the dashboard → drift between environments; use migrations.
|
|
62
|
+
- Treating it as a black box rather than Postgres → you can and should use SQL, indexes, and extensions.
|
|
63
|
+
|
|
64
|
+
## Examples
|
|
65
|
+
```sql
|
|
66
|
+
-- Enable RLS and restrict rows to their owner
|
|
67
|
+
alter table profiles enable row level security;
|
|
68
|
+
|
|
69
|
+
create policy "owner can read" on profiles
|
|
70
|
+
for select using (auth.uid() = user_id);
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Further reading
|
|
74
|
+
- Row Level Security: https://supabase.com/docs/guides/database/postgres/row-level-security
|
|
75
|
+
- Auth: https://supabase.com/docs/guides/auth
|
|
76
|
+
|
|
77
|
+
## Related skills
|
|
78
|
+
- ../postgresql — the database engine underneath Supabase
|
|
79
|
+
- ../neon — serverless Postgres alternative
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: chart-js
|
|
3
|
+
description: Chart.js is a popular open-source HTML5 Canvas charting library for the browser with built-in chart types (line, bar, pie, doughnut, radar, scatter, bubble, polar area). Consult when you need responsive, animated, framework-agnostic charts quickly without writing low-level SVG, or when integrating charts with React/Vue/Angular via official wrappers.
|
|
4
|
+
domain: stack
|
|
5
|
+
category: dataviz
|
|
6
|
+
tags: [chart-js, chartjs, dataviz, javascript, canvas, charts, visualization]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://www.chartjs.org/docs/latest/
|
|
9
|
+
- https://github.com/chartjs/Chart.js
|
|
10
|
+
- https://www.npmjs.com/package/chart.js
|
|
11
|
+
verified: 2026-06-17
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Chart.js
|
|
15
|
+
|
|
16
|
+
## Overview
|
|
17
|
+
Chart.js is a simple, flexible open-source JavaScript charting library that renders to an HTML5 `<canvas>`. It ships eight core chart types plus animations, tooltips, and responsive resizing out of the box, with a plugin and scale system for extension. Read this when you need clean, interactive charts fast and don't require the fully custom control of a low-level library like D3.
|
|
18
|
+
|
|
19
|
+
## Official sources
|
|
20
|
+
- Docs: https://www.chartjs.org/docs/latest/
|
|
21
|
+
- Repo: https://github.com/chartjs/Chart.js
|
|
22
|
+
- Install: https://www.npmjs.com/package/chart.js
|
|
23
|
+
|
|
24
|
+
## Install / setup
|
|
25
|
+
```bash
|
|
26
|
+
npm install chart.js
|
|
27
|
+
```
|
|
28
|
+
Command from the official installation guide (https://www.chartjs.org/docs/latest/getting-started/installation.html); CDN builds are available on jsDelivr (`https://cdn.jsdelivr.net/npm/chart.js`) and CDNJS.
|
|
29
|
+
|
|
30
|
+
## Core concepts
|
|
31
|
+
- **Chart instance** — `new Chart(ctx, config)` mounts a chart onto a canvas 2D context.
|
|
32
|
+
- **Config object** — `{ type, data, options }` declaratively describes the chart.
|
|
33
|
+
- **Datasets** — each `data.datasets[]` entry holds values, labels, colors, and per-dataset options.
|
|
34
|
+
- **Scales** — cartesian (`x`/`y`) and radial axes configured under `options.scales`.
|
|
35
|
+
- **Tree-shaking** — register only the controllers/elements you use, or import `chart.js/auto` for everything.
|
|
36
|
+
- **Plugins** — lifecycle hooks (`beforeDraw`, `afterEvent`) extend rendering; many community plugins exist.
|
|
37
|
+
- **Responsive** — charts resize to their container by default (`responsive: true`).
|
|
38
|
+
- **Animations** — transitions are configurable per property under `options.animation`.
|
|
39
|
+
|
|
40
|
+
## Best practices
|
|
41
|
+
- Import from `chart.js/auto` for prototypes, but register components explicitly in production to tree-shake (https://www.chartjs.org/docs/latest/getting-started/integration.html).
|
|
42
|
+
- Give the canvas a sized wrapper element and avoid hard-coding width/height for responsiveness (https://www.chartjs.org/docs/latest/configuration/responsive.html).
|
|
43
|
+
- Call `chart.update()` after mutating `chart.data`, and `chart.destroy()` before recreating to avoid leaks (https://www.chartjs.org/docs/latest/developers/api.html).
|
|
44
|
+
- Use official framework wrappers (react-chartjs-2, vue-chartjs) instead of manually bridging lifecycles.
|
|
45
|
+
|
|
46
|
+
## Common pitfalls
|
|
47
|
+
- "category is not a registered scale" error → you tree-shook too aggressively; register the needed scales/controllers or use `chart.js/auto`.
|
|
48
|
+
- Chart grows infinitely tall in a flex/grid parent → set `maintainAspectRatio: false` and size the wrapper.
|
|
49
|
+
- Re-rendering over an existing canvas → destroy the previous instance first (`chart.destroy()`).
|
|
50
|
+
|
|
51
|
+
## Examples
|
|
52
|
+
```js
|
|
53
|
+
import { Chart } from "chart.js/auto";
|
|
54
|
+
|
|
55
|
+
const ctx = document.getElementById("myChart").getContext("2d");
|
|
56
|
+
new Chart(ctx, {
|
|
57
|
+
type: "bar",
|
|
58
|
+
data: {
|
|
59
|
+
labels: ["Jan", "Feb", "Mar", "Apr"],
|
|
60
|
+
datasets: [{ label: "Sales", data: [12, 19, 7, 15], backgroundColor: "steelblue" }]
|
|
61
|
+
},
|
|
62
|
+
options: { responsive: true, scales: { y: { beginAtZero: true } } }
|
|
63
|
+
});
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Further reading
|
|
67
|
+
- https://www.chartjs.org/docs/latest/charts/line.html — per-chart-type configuration reference.
|
|
68
|
+
- https://www.chartjs.org/docs/latest/samples/ — official runnable samples.
|
|
69
|
+
|
|
70
|
+
## Related skills
|
|
71
|
+
- ../d3 — drop down to D3 when you need fully custom, non-standard charts.
|
|
72
|
+
- ../plotly — alternative when you need scientific/3D/statistical chart types.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: d3
|
|
3
|
+
description: D3.js (Data-Driven Documents) is a low-level JavaScript library for binding data to the DOM/SVG/Canvas and building bespoke, fully custom interactive data visualizations. Consult when you need hand-crafted charts, scales, axes, transitions, geo/map projections, force layouts, or custom SVG dataviz that off-the-shelf chart libraries can't express.
|
|
4
|
+
domain: stack
|
|
5
|
+
category: dataviz
|
|
6
|
+
tags: [d3, d3js, dataviz, javascript, svg, charts, visualization]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://d3js.org/getting-started
|
|
9
|
+
- https://github.com/d3/d3
|
|
10
|
+
- https://www.npmjs.com/package/d3
|
|
11
|
+
verified: 2026-06-17
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# D3.js
|
|
15
|
+
|
|
16
|
+
## Overview
|
|
17
|
+
D3.js (Data-Driven Documents) is a low-level JavaScript library for manipulating documents based on data. It gives you scales, selections, axes, shapes, transitions, layouts, and geo projections so you can build any visualization you can imagine—but you draw the marks yourself (SVG/Canvas). Read this when you need fully custom, interactive, or animated charts beyond what high-level libraries like Chart.js or Plotly offer.
|
|
18
|
+
|
|
19
|
+
## Official sources
|
|
20
|
+
- Docs: https://d3js.org/getting-started
|
|
21
|
+
- Repo: https://github.com/d3/d3
|
|
22
|
+
- Install: https://www.npmjs.com/package/d3
|
|
23
|
+
|
|
24
|
+
## Install / setup
|
|
25
|
+
```bash
|
|
26
|
+
npm install d3
|
|
27
|
+
```
|
|
28
|
+
Command from the official getting-started guide (https://d3js.org/getting-started); for browser-only use, import the ESM bundle from `https://cdn.jsdelivr.net/npm/d3@7/+esm`.
|
|
29
|
+
|
|
30
|
+
## Core concepts
|
|
31
|
+
- **Selections** — `d3.select`/`selectAll` wrap DOM nodes for declarative manipulation and the enter/update/exit data-join pattern.
|
|
32
|
+
- **Data join** — `selection.data(arr).join("rect")` binds data to elements, creating, updating, and removing nodes to match.
|
|
33
|
+
- **Scales** — `d3.scaleLinear`, `scaleBand`, `scaleTime`, `scaleOrdinal` map data domains to visual ranges (pixels, colors).
|
|
34
|
+
- **Axes** — `d3.axisBottom(scale)` renders ticks/labels from a scale into an SVG group.
|
|
35
|
+
- **Shape generators** — `d3.line`, `d3.arc`, `d3.area`, `d3.pie` produce SVG path strings from data.
|
|
36
|
+
- **Transitions** — `selection.transition().duration(...)` interpolates attributes/styles for animation.
|
|
37
|
+
- **Modules** — D3 is a collection of independent packages (d3-array, d3-scale, d3-geo…) importable individually.
|
|
38
|
+
- **Geo** — `d3-geo` projections + GeoJSON drive maps and choropleths.
|
|
39
|
+
|
|
40
|
+
## Best practices
|
|
41
|
+
- Cherry-pick submodules (`import {scaleLinear} from "d3-scale"`) to shrink bundle size (https://d3js.org/getting-started).
|
|
42
|
+
- Use the enter/update/exit (or `.join()`) pattern for dynamic data rather than re-rendering everything (https://d3js.org/d3-selection/joining).
|
|
43
|
+
- Prefer Canvas over SVG when rendering thousands of marks for performance (https://d3js.org/d3-selection).
|
|
44
|
+
- Keep D3 for data/layout math and let a framework own the DOM when integrating with React/Vue.
|
|
45
|
+
|
|
46
|
+
## Common pitfalls
|
|
47
|
+
- Forgetting the data key function makes `.data()` rebind by index, breaking object constancy → pass a key: `.data(arr, d => d.id)`.
|
|
48
|
+
- Mutating the DOM with both React and D3 causes conflicts → let D3 compute attrs, render via the framework, or isolate D3 in a ref.
|
|
49
|
+
- Misreading scale direction for SVG `y` (origin top-left) → invert the range: `scaleLinear([0, max], [height, 0])`.
|
|
50
|
+
|
|
51
|
+
## Examples
|
|
52
|
+
```js
|
|
53
|
+
import * as d3 from "d3";
|
|
54
|
+
|
|
55
|
+
const data = [4, 8, 15, 16, 23, 42];
|
|
56
|
+
const w = 420, h = 120;
|
|
57
|
+
const x = d3.scaleBand().domain(data.map((_, i) => i)).range([0, w]).padding(0.1);
|
|
58
|
+
const y = d3.scaleLinear().domain([0, d3.max(data)]).range([h, 0]);
|
|
59
|
+
|
|
60
|
+
const svg = d3.select("body").append("svg").attr("width", w).attr("height", h);
|
|
61
|
+
svg.selectAll("rect")
|
|
62
|
+
.data(data)
|
|
63
|
+
.join("rect")
|
|
64
|
+
.attr("x", (_, i) => x(i))
|
|
65
|
+
.attr("y", d => y(d))
|
|
66
|
+
.attr("width", x.bandwidth())
|
|
67
|
+
.attr("height", d => h - y(d))
|
|
68
|
+
.attr("fill", "steelblue");
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Further reading
|
|
72
|
+
- https://d3js.org/ — module-by-module API reference and live examples.
|
|
73
|
+
- https://observablehq.com/@d3/gallery — official gallery of D3 visualizations.
|
|
74
|
+
|
|
75
|
+
## Related skills
|
|
76
|
+
- ../chart-js — higher-level canvas charting when you don't need custom marks.
|
|
77
|
+
- ../plotly — declarative interactive charts built on top of d3/WebGL.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: grafana
|
|
3
|
+
description: Grafana is an open-source observability and analytics platform for querying, visualizing, alerting on, and exploring metrics, logs, and traces from many data sources (Prometheus, Loki, InfluxDB, SQL, and more). Consult when you need to build operational dashboards, set up alerting, wire up data sources, or provision dashboards-as-code for monitoring and observability.
|
|
4
|
+
domain: stack
|
|
5
|
+
category: dataviz
|
|
6
|
+
tags: [grafana, dataviz, observability, dashboards, monitoring, prometheus, alerting]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://grafana.com/docs/grafana/latest/
|
|
9
|
+
- https://github.com/grafana/grafana
|
|
10
|
+
- https://grafana.com/docs/grafana/latest/setup-grafana/installation/
|
|
11
|
+
verified: 2026-06-17
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Grafana
|
|
15
|
+
|
|
16
|
+
## Overview
|
|
17
|
+
Grafana is an open-source platform for monitoring and observability: it connects to dozens of data sources and lets you compose interactive dashboards, run ad-hoc queries (Explore), and define alerting—all without storing data itself. It is the de-facto visualization layer for Prometheus, Loki, and time-series stacks. Read this when you need operational dashboards, alert rules, data-source configuration, or dashboards provisioned as code.
|
|
18
|
+
|
|
19
|
+
## Official sources
|
|
20
|
+
- Docs: https://grafana.com/docs/grafana/latest/
|
|
21
|
+
- Repo: https://github.com/grafana/grafana
|
|
22
|
+
- Install: https://grafana.com/docs/grafana/latest/setup-grafana/installation/
|
|
23
|
+
|
|
24
|
+
## Install / setup
|
|
25
|
+
```bash
|
|
26
|
+
docker run -d -p 3000:3000 --name grafana grafana/grafana-oss
|
|
27
|
+
```
|
|
28
|
+
Quick-start Docker command from the official install docs (https://grafana.com/docs/grafana/latest/setup-grafana/installation/docker/); browse to http://localhost:3000 and sign in with admin / admin. APT/RPM/Windows installers are documented under the install page.
|
|
29
|
+
|
|
30
|
+
## Core concepts
|
|
31
|
+
- **Data source** — a connection to a backend (Prometheus, Loki, InfluxDB, MySQL, etc.); Grafana queries it live, it stores nothing.
|
|
32
|
+
- **Dashboard** — a collection of panels arranged on a grid, JSON-modeled and shareable.
|
|
33
|
+
- **Panel** — one visualization (time series, gauge, table, stat, bar gauge…) backed by one or more queries.
|
|
34
|
+
- **Query & transformations** — per-panel queries plus client-side transforms (joins, calculations, reshaping).
|
|
35
|
+
- **Variables** — template variables make dashboards reusable/parameterized (e.g. `$instance`).
|
|
36
|
+
- **Alerting** — unified alert rules evaluate queries and route notifications via contact points.
|
|
37
|
+
- **Provisioning** — data sources and dashboards defined as YAML/JSON files for GitOps.
|
|
38
|
+
- **Explore** — ad-hoc query/log/trace exploration outside dashboards.
|
|
39
|
+
|
|
40
|
+
## Best practices
|
|
41
|
+
- Provision data sources and dashboards as code (files under `provisioning/`) instead of clicking in the UI (https://grafana.com/docs/grafana/latest/administration/provisioning/).
|
|
42
|
+
- Use template variables and repeating panels/rows to keep dashboards DRY (https://grafana.com/docs/grafana/latest/dashboards/variables/).
|
|
43
|
+
- Move off the bundled SQLite to PostgreSQL/MySQL for production HA (https://grafana.com/docs/grafana/latest/setup-grafana/installation/).
|
|
44
|
+
- Change the default admin password and configure proper auth/proxy before exposing (https://grafana.com/docs/grafana/latest/setup-grafana/configure-security/).
|
|
45
|
+
|
|
46
|
+
## Common pitfalls
|
|
47
|
+
- Editing dashboards in the UI when they're provisioned from files → changes are read-only/overwritten; edit the source files instead.
|
|
48
|
+
- Relying on SQLite for production → it doesn't scale; migrate the Grafana database to Postgres/MySQL.
|
|
49
|
+
- Dashboard "No data" → mismatched data-source UID or query time range; verify the data source and `$__range`/time picker.
|
|
50
|
+
|
|
51
|
+
## Examples
|
|
52
|
+
```yaml
|
|
53
|
+
# provisioning/datasources/prometheus.yaml — provision a data source as code
|
|
54
|
+
apiVersion: 1
|
|
55
|
+
datasources:
|
|
56
|
+
- name: Prometheus
|
|
57
|
+
type: prometheus
|
|
58
|
+
access: proxy
|
|
59
|
+
url: http://prometheus:9090
|
|
60
|
+
isDefault: true
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Further reading
|
|
64
|
+
- https://grafana.com/docs/grafana/latest/fundamentals/getting-started/ — build your first dashboard.
|
|
65
|
+
- https://grafana.com/docs/grafana/latest/alerting/ — unified alerting reference.
|
|
66
|
+
|
|
67
|
+
## Related skills
|
|
68
|
+
- ../plotly — code-driven interactive charts when you control the rendering app.
|
|
69
|
+
- ../d3 — fully custom one-off visualizations outside a dashboard tool.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: plotly
|
|
3
|
+
description: Plotly is an open-source interactive graphing library available for Python (plotly.py), JavaScript (plotly.js), and R, producing web-based charts including statistical, scientific, financial, 3D, and geographic plots. Consult when you need interactive, publication-quality charts in notebooks or web apps, Plotly Express one-liners, or the Dash framework for analytical web dashboards.
|
|
4
|
+
domain: stack
|
|
5
|
+
category: dataviz
|
|
6
|
+
tags: [plotly, plotly-express, dataviz, python, javascript, charts, dash]
|
|
7
|
+
official_sources:
|
|
8
|
+
- https://plotly.com/python/
|
|
9
|
+
- https://github.com/plotly/plotly.py
|
|
10
|
+
- https://plotly.com/python/getting-started/
|
|
11
|
+
verified: 2026-06-17
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Plotly
|
|
15
|
+
|
|
16
|
+
## Overview
|
|
17
|
+
Plotly is an open-source interactive charting library with high-level APIs for Python, R, and JavaScript, all built on the plotly.js rendering engine (D3 + WebGL). It produces interactive HTML charts—zoom, pan, hover—across statistical, scientific, 3D, and map chart types, and embeds in Jupyter, standalone HTML, or Dash web apps. Read this when you need interactive, exploratory, or publication-quality charts, especially in Python notebooks.
|
|
18
|
+
|
|
19
|
+
## Official sources
|
|
20
|
+
- Docs: https://plotly.com/python/
|
|
21
|
+
- Repo: https://github.com/plotly/plotly.py
|
|
22
|
+
- Install: https://plotly.com/python/getting-started/
|
|
23
|
+
|
|
24
|
+
## Install / setup
|
|
25
|
+
```bash
|
|
26
|
+
pip install plotly
|
|
27
|
+
```
|
|
28
|
+
Command from the official Python getting-started guide (https://plotly.com/python/getting-started/); use `pip install "plotly[express]"` for Plotly Express extras, `conda install -c conda-forge plotly`, or for the browser `npm install plotly.js-dist` (https://plotly.com/javascript/getting-started/).
|
|
29
|
+
|
|
30
|
+
## Core concepts
|
|
31
|
+
- **Figure** — the top-level object (`plotly.graph_objects.Figure`), serializable to JSON, containing `data` traces and a `layout`.
|
|
32
|
+
- **Traces** — typed data series (scatter, bar, heatmap, surface, choropleth…) added to a figure.
|
|
33
|
+
- **Plotly Express (px)** — high-level wrapper that builds whole figures from a dataframe in one call.
|
|
34
|
+
- **Graph Objects (go)** — low-level, explicit figure construction for full control.
|
|
35
|
+
- **Layout** — axes, titles, legends, annotations, and styling under `figure.layout`.
|
|
36
|
+
- **Renderers** — where a figure displays (notebook, browser, static image via Kaleido).
|
|
37
|
+
- **Dash** — Plotly's companion framework for building interactive analytic web apps in pure Python.
|
|
38
|
+
- **plotly.js** — the underlying JS engine; the Python/R libraries emit configs it renders.
|
|
39
|
+
|
|
40
|
+
## Best practices
|
|
41
|
+
- Reach for Plotly Express first; drop to Graph Objects only when px can't express the chart (https://plotly.com/python/plotly-express/).
|
|
42
|
+
- Use `fig.update_layout()` / `fig.update_traces()` to style rather than rebuilding figures (https://plotly.com/python/creating-and-updating-figures/).
|
|
43
|
+
- Install Kaleido for static PNG/SVG/PDF export (`pip install kaleido`) (https://plotly.com/python/static-image-export/).
|
|
44
|
+
- For large scatter data, use WebGL trace types (`scattergl`) for performance (https://plotly.com/python/webgl-vs-svg/).
|
|
45
|
+
|
|
46
|
+
## Common pitfalls
|
|
47
|
+
- Figures don't render in a plain script → call `fig.show()` and ensure a renderer; in some contexts write HTML with `fig.write_html()`.
|
|
48
|
+
- `fig.write_image()` fails → Kaleido isn't installed; `pip install kaleido`.
|
|
49
|
+
- Mixing px and go incorrectly → px returns a full `Figure`; add go traces with `fig.add_trace()` rather than reconstructing.
|
|
50
|
+
|
|
51
|
+
## Examples
|
|
52
|
+
```python
|
|
53
|
+
import plotly.express as px
|
|
54
|
+
|
|
55
|
+
df = px.data.iris()
|
|
56
|
+
fig = px.scatter(
|
|
57
|
+
df, x="sepal_width", y="sepal_length",
|
|
58
|
+
color="species", size="petal_length",
|
|
59
|
+
title="Iris sepal dimensions",
|
|
60
|
+
)
|
|
61
|
+
fig.update_layout(legend_title_text="Species")
|
|
62
|
+
fig.show()
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Further reading
|
|
66
|
+
- https://plotly.com/python/reference/ — full figure/trace attribute reference.
|
|
67
|
+
- https://dash.plotly.com/ — Dash framework for analytical web apps.
|
|
68
|
+
|
|
69
|
+
## Related skills
|
|
70
|
+
- ../d3 — the low-level layer beneath plotly.js for fully custom visualizations.
|
|
71
|
+
- ../chart-js — lighter canvas charts when you don't need scientific/3D types.
|