MindToss is a quick-capture iOS app: type, record, or snap a thought and send it to your inbox for later processing.
- Text notes with a simple character count.
- Voice memos recorded in-app and sent as email attachments.
- Photo capture or library selection with optional notes.
- Multiple destination inboxes.
- Local and synced toss history.
- Dark mode.
- In-app support, privacy, terms, sign-out, and account deletion flows.
- Vite + React + TypeScript for the app UI.
- Capacitor for the native iOS wrapper.
- Convex HTTP routes for auth, app-state sync, account deletion, and email dispatch.
- SMTP2GO for outbound email from
noreply@mindtoss.space. - Native Sign in with Apple through
@capacitor-community/apple-sign-in.
mindtoss/
├── src/
│ ├── App.tsx # Main app screens and capture flow
│ ├── components/
│ │ ├── AuthScreen.tsx # Email and Apple sign-in UI
│ │ └── LegalPages.tsx # In-app support/privacy/terms
│ └── lib/convex.ts # Client HTTP wrapper for Convex routes
├── convex/
│ ├── http.ts # Public HTTP API routes
│ ├── users.ts # Auth/session/state mutations and queries
│ ├── email.ts # SMTP2GO email action
│ └── schema.ts # Convex schema
├── ios/App/ # Capacitor iOS project
├── website/ # Public legal/support pages
├── capacitor.config.ts
├── vite.config.ts
├── package.json
└── .env.example
- Node.js 18+ with npm.
- Xcode for iOS builds.
- A Convex deployment.
- An SMTP2GO API key configured in Convex environment variables.
- Apple Developer configuration for the iOS app and Sign in with Apple.
Copy .env.example to .env.local and set:
VITE_CONVEX_URL=https://your-deployment.convex.cloud
CONVEX_DEPLOYMENT=your-deployment
VITE_APPLE_CLIENT_ID=com.mindtoss.appSet SMTP2GO_API_KEY in the Convex deployment environment, not in the client app.
npm install
npm run convex:dev
npm run devThe Vite dev server runs the web app. Native-only capabilities such as Sign in with Apple and iOS camera behavior should be verified in the Capacitor iOS app.
npm run buildThis runs TypeScript project checks and creates the production web bundle in dist/.
npm run syncThis builds the web app and copies dist/ into both Capacitor iOS public asset directories used by the project.
Then open the iOS project:
npm run openBuild and archive from Xcode for App Store submission.
npm run convex:deployImportant runtime expectations:
/api/send-emailrequires an authenticated session token./api/statestores user app state as JSON blobs.- Account deletion removes synced state, sessions, and the user record.
- Email delivery requires
SMTP2GO_API_KEY.
Short description:
Capture thoughts instantly. Toss them to your inbox. Never forget a thing.
Suggested keywords:
gtd,inbox zero,capture,notes,voice memo,todo,tasks,productivity,email,quick note
Avoid advertising subscriptions, free-tier limits, or transcription until those features are implemented and enforced in the app/backend.
- Confirm the user is signed in.
- Confirm the destination inbox is a real email address.
- Avoid Apple private relay addresses for the destination inbox.
- Confirm
SMTP2GO_API_KEYis configured in Convex. - Check the Convex logs for
/api/send-emailerrors.
- Verify iOS permission strings in
ios/App/MindToss/Info.plist. - Test native capture in the iOS app, not only the Vite web server.
- Apple Sign In is native iOS-only in this build.
- Verify the app bundle identifier and Apple Developer capability setup.
- Email: support@mindtoss.space
- Website: https://mindtoss.space
