1.0.4 โ€ข Published 8 months ago

@ct0dev/mini-app-sdk v1.0.4

Weekly downloads
-
License
MIT
Repository
github
Last release
8 months ago

๐Ÿงฉ @ct0/mini-app-sdk

A lightweight React Native SDK to simplify building AI-generated mini-apps inside ct0.dev.

Includes:

  • โœ… App & user context (MiniAppProvider)
  • โœ… Flexible CRUD (useCrud) for any collection
  • โœ… Shared vs private access support
  • โœ… Auto caching via AsyncStorage
  • โœ… Extensible structure for future hooks (assets, auth, etc.)

โœจ Installation

npm install @ct0/mini-app-sdk
# or
yarn add @ct0/mini-app-sdk

Peer dependencies:

- react
- react-dom
- @react-native-async-storage/async-storage

โš™๏ธ Usage

1. Wrap your mini-app with MiniAppProvider

import { MiniAppProvider } from '@ct0/mini-app-sdk';

export default function App() {
  return (
    <MiniAppProvider
      appId="your-app-id"
      userId="ajay"
      apiBaseUrl="https://api.ct0.in"
      theme="dark"
      language="en"
      onClose={() => console.log('App closed')}
      onError={(err) => console.error(err)}
    >
      <YourMiniApp />
    </MiniAppProvider>
  );
}

2. Use Context Anywhere

import { useMiniAppContext } from '@ct0/mini-app-sdk';

const {
  appId,
  userId,
  apiBaseUrl,
  theme,
  language,
  onClose,
  onError
} = useMiniAppContext();

3. Use CRUD for Collections

import { useCrud } from '@ct0/mini-app-sdk';

const { items, create, update, remove, refresh, loading } = useCrud('todos');

Shared access (e.g. group data)

const { items } = useCrud('expenses', { access: 'shared' });

๐Ÿ’พ Caching & Offline Support

  • All useCrud() data is cached in AsyncStorage
  • Auto loaded on mount, then updated in background
  • Automatically updated on create, update, remove

๐Ÿงฑ API Summary

FeatureHookDescriptionStatus
โœ… App ContextuseMiniAppContext()Access appId, userId, apiBaseUrl, etc.โœ… Ready
โœ… ProviderMiniAppProviderWrap your app and pass contextโœ… Ready
โœ… Collection CRUDuseCrud()Full CRUD with cache + accessModeโœ… Ready

๐Ÿ”ฎ Planned Additions

FeatureHookPriority
๐Ÿ“ Asset UploadsuseAssets()๐Ÿ”œ High
๐Ÿง  AuthuseAuth()๐Ÿ”œ High
๐Ÿ›  App SettingsuseSettings()๐Ÿ”œ Medium
๐ŸŒ TranslationsuseI18n()๐Ÿ”œ Medium
๐Ÿ”” NotificationsuseNotifications()๐Ÿ”œ Medium
๐Ÿ•ธ Realtime SyncuseRealtime()๐Ÿ”œ Medium
๐Ÿ“ธ Media CaptureuseCamera()๐Ÿ”œ Medium
๐Ÿ“ค ShareuseShare()๐Ÿ”œ Optional
๐ŸŽ› ExperimentsuseExperiments()๐Ÿ”œ Optional

โœ… ๐™ฒ๐™พ๐š๐™ด ๐™ฐ๐™ฟ๐™ธ ๐™ฐ๐™ฑ๐š‚๐šƒ๐š๐™ฐ๐™ฒ๐šƒ๐™ธ๐™พ๐™ฝ๐š‚

FeatureHookDescriptionPriority
๐Ÿง  User AuthuseAuth()Identity context (guest/userId/login/logout)โœ… Essential
๐Ÿ“ฆ CRUDuseCrud()Generic collection-level CRUD with offline supportโœ… Already Done
๐Ÿ“ Asset UploadsuseAssets()Upload image/audio/video/files and get back URLโœ… High
๐Ÿ”„ Sync + CacheuseSync()Background syncing, stale/while-revalidate patternโœ… High
๐Ÿงพ MetadatauseMeta()Access appId, collectionId, userId, access modeโœ… Essential

๐ŸŽจ ๐š„๐š‚๐™ด๐š ๐™ด๐š‡๐™ฟ๐™ด๐š๐™ธ๐™ด๐™ฝ๐™ฒ๐™ด

FeatureHookDescriptionPriority
๐Ÿ“ LocationuseLocation()Get current location with permission flow๐Ÿ”œ Medium
๐Ÿ“ค ShareuseShare()Native or link-based content sharing๐Ÿ”œ Medium
๐Ÿ”” NotificationsuseNotifications()Show toast/in-app/push alerts๐Ÿ”œ Medium
๐ŸŒ“ ThemeuseTheme()Access color palette, dark/light, etc.๐Ÿ”œ Optional
๐ŸŒ LanguageuseI18n()Simple string translation + language switch๐Ÿ”œ Optional

๐Ÿงฐ ๐™ฒ๐™พ๐™ผ๐™ฟ๐™พ๐™ฝ๐™ด๐™ฝ๐šƒ + ๐š‚๐šƒ๐™ฐ๐šƒ๐™ด ๐š„๐šƒ๐™ธ๐™ป๐š‚

FeatureHookDescriptionPriority
๐Ÿ’พ Local StorageuseStorage()Persistent key-value store (per user/app)โœ… High
๐Ÿงช ExperimentsuseExperiments()Feature flags + variant checks๐Ÿ”œ Optional
โš™๏ธ SettingsuseSettings()App-wide settings (e.g. preferences)๐Ÿ”œ Optional
๐Ÿงญ NavigationuseNav()Abstracted navigation across host/mini๐Ÿ”œ TBD
๐Ÿ’ฌ PromptingusePrompt()Call AI (Together, OpenAI, etc.) from inside app๐Ÿ”œ Very Useful

๐Ÿ” ๐š๐™ด๐™ฐ๐™ป๐šƒ๐™ธ๐™ผ๐™ด + ๐™ฒ๐™พ๐™ป๐™ป๐™ฐ๐™ฑ

FeatureHookDescriptionPriority
๐Ÿ”ƒ Realtime DatauseRealtime()Pub-sub or listener on collection๐Ÿ”œ Medium
๐Ÿ‘ฅ PresenceusePresence()Track who is online or live๐Ÿ”œ Optional
๐Ÿ•’ ScheduleruseScheduler()Run tasks on interval (e.g., sync every 5m)๐Ÿ”œ Optional
โŒ› Offline DetectoruseOffline()Show fallback if no connection๐Ÿ”œ Optional

๐Ÿงฉ ๐š‚๐™ฟ๐™ด๐™ฒ๐™ธ๐™ฐ๐™ป ๐™ผ๐™พ๐™ณ๐™ด๐™ป๐š‚ / ๐™ฒ๐™ฐ๐š‚๐™ด๐š‚

FeatureHookDescriptionPriority
๐Ÿ“ธ Media CaptureuseCamera() / useMicrophone()Capture image/audio and uploadโœ… For image/audio blogs
๐Ÿ“š Collections IndexuseIndex()List all collections + schemas in app๐Ÿ”œ Optional
๐Ÿงต CommentsuseComments()Prebuilt support for threaded replies๐Ÿ”œ Optional
๐Ÿ“ˆ MetricsuseMetrics()Record engagement, actions, views๐Ÿ”œ Optional
๐ŸŽ TemplatesuseTemplates()Fetch reusable templates/layouts๐Ÿ”œ Optional

๐Ÿ“‹ ๐™ฟ๐™ป๐™ฐ๐šƒ๐™ต๐™พ๐š๐™ผ ๐š‚๐š„๐™ฟ๐™ฟ๐™พ๐š๐šƒ

FeatureHookDescriptionPriority
๐Ÿง  Model ContextuseModelInfo()Detect which model generated this mini-app๐Ÿ”œ Debugging
๐Ÿงฉ App InfouseAppInfo()Show version, bundle source, build ID๐Ÿ”œ Optional
๐Ÿงน Cache ManagementuseCache()Clear app or component cacheโœ… Already Added

๐Ÿงช EXAMPLE ROLLING PLAN

  • โœ… useCrud(), useAssets(), useAuth()
  • โœ… useMeta(), useStorage()
  • ๐Ÿ”œ useNotifications(), useLocation(), usePrompt()
  • ๐Ÿ”œ useRealtime(), useShare(), useCamera()
  • ๐Ÿ”œ Advanced: useExperiments(), useScheduler(), usePresence()

๐Ÿงช Dev Commands

yarn build       # Compile SDK to dist/
yarn dev         # Watch mode (Rollup)
yarn lint        # ESLint
yarn format      # Prettier

๐Ÿ“ฆ This SDK powersโ€ฆ

โœ… Todo apps
โœ… Expense splitters
โœ… Journals, trackers, diaries
โœ… Group shared utilities
โ€ฆand 100s of AI-generated ct0.dev apps!


Made for dynamic creativity at ct0.dev

1.0.5

8 months ago

1.0.4

8 months ago

1.0.3

8 months ago

1.0.2

8 months ago

1.0.1

8 months ago

1.0.0

8 months ago