Folo/apps/mobile
Innei 9bb974b8fd
feat(ai): support ai attachement (#4316)
* init

Signed-off-by: Innei <tukon479@gmail.com>

* feat(ai-chat): enhance file handling with category-based icon retrieval

- Introduced `getFileCategoryFromMimeType` function to categorize file types based on MIME type, improving the clarity of file handling in the AI chat interface.
- Updated `FileAttachmentBlock` and `AIChatContextBar` components to utilize the new categorization function for determining file icons, streamlining the code and enhancing maintainability.
- Removed redundant MIME type checks, simplifying the logic for icon assignment.

These changes improve the user experience by ensuring accurate file representation and reduce code complexity.

Signed-off-by: Innei <tukon479@gmail.com>

* feat: preview image

* Update avatar upload to use followApi and bump deps

* feat: Refactor AI chat context blocks and file upload handling

- Introduced new components for rendering AI chat context blocks, including AIDataBlockItem and AIDataBlockPart.
- Enhanced file attachment handling by updating the structure of AIChatContextBlock to separate file attachments from other block types.
- Implemented a new file upload hook (useFileUpload) to manage file uploads with progress tracking and toast notifications.
- Added UploadProgress and CircularProgress components for visual feedback during file uploads.
- Improved file processing logic to simulate realistic upload progress and handle errors more effectively.
- Updated existing components to utilize the new block structure and file upload logic.
- Created utility functions for managing block styles, icons, and labels for better code organization.

Signed-off-by: Innei <tukon479@gmail.com>

* feat: Enhance chat message rendering with Suspense and add ThinkingIndicator component

Signed-off-by: Innei <tukon479@gmail.com>

* fix: Remove error check for message metadata in AIChatMessage component

Signed-off-by: Innei <tukon479@gmail.com>

---------

Signed-off-by: Innei <tukon479@gmail.com>
2025-08-08 16:32:52 +08:00
..
assets fix(android): splash icon, close #4174 2025-07-15 14:43:45 +08:00
build
changelog feat(settings): add option for independent content font size and presets 2025-07-29 17:52:43 +08:00
code-signing feat: use custom expo update server (#4206) 2025-07-19 00:54:48 +08:00
ios fix(mobile): improve social media skeleton 2025-07-25 16:39:10 +08:00
native feat: implement audio seeking functionality (#4295) 2025-08-01 23:43:30 +08:00
plugins fix(path): change path package to pathe (#4038) 2025-07-07 16:55:37 +08:00
scripts feat(changelog-cli): implement AI-driven changelog generation with OpenAI integration 2025-07-25 00:09:11 +08:00
src feat(ai): support ai attachement (#4316) 2025-08-08 16:32:52 +08:00
web-app feat: implement audio seeking functionality (#4295) 2025-08-01 23:43:30 +08:00
.env.example chore: recover .env.example 2025-03-10 18:40:04 +08:00
.gitignore feat: use custom expo update server (#4206) 2025-07-19 00:54:48 +08:00
CLAUDE.md feat(ai): support customize chat title 2025-08-07 20:57:12 +08:00
README.md feat: update twitter handle 2025-07-03 15:12:18 +08:00
app.config.ts chore: disable expo updates for now 2025-07-23 15:45:46 +08:00
babel.config.js chore(mobile): remove babel plugin module resolver 2025-05-27 14:57:09 +08:00
bump.config.ts chore: update iOS Info.plist and bump version to 0.2.4, increment build number to 113 2025-07-24 18:35:09 +08:00
eas.json feat(mobile): android releaseStatus draft 2025-04-13 16:54:37 +08:00
global.d.ts
metro.config.js fix(path): change path package to pathe (#4038) 2025-07-07 16:55:37 +08:00
nativewind-env.d.ts
package.json refactor: upgrade FlashList to v2 (#4298) 2025-08-03 13:56:39 +08:00
postcss.config.js
shim-env.d.ts
tailwind.config.ts feat(mobile): support font scaling for web render 2025-07-24 22:12:45 +08:00
tailwind.dom.config.ts refactor: remove unused files and clean up project structure 2025-04-28 20:58:51 +08:00
tsconfig.json refactor(mobile): enable package exports (#3822) 2025-05-27 10:54:49 +08:00

README.md

Folo Mobile App 📱

This is the mobile client for Folo, built with Expo. Folo organizes content into one timeline, keeping you updated on what matters, noise-free.

Features

  • Customized information hub for content discovery
  • AI-powered features like translation and summary
  • Dynamic content support (articles, videos, images, audio)
  • $POWER integration for creator economy
  • Cross-platform support (iOS & Android [WIP])
  • Modern UI design with native feel

Getting Started

  1. Enable Corepack (if not already enabled)

    corepack enable
    
  2. Install dependencies

    pnpm install
    
  3. Start the development server

    pnpm run dev
    

You can run the app on:

  • iOS Simulator (pnpm run ios)
  • iOS Device (pnpm run ios:device)
  • Android Emulator (pnpm run android)
  • Development build for full native feature testing

Project Structure

src/
├── modules/         # Feature-specific modules
│   ├── discover/    # Discovery feed features
│   └── ...
├── screens/         # App screens using file-based routing
└── ...

Development

  • Built with Expo SDK [>=52]
  • Uses Expo Router for navigation
  • Styling with NativeWind
  • State management with Jotai and Zustand
  • API integration with Tanstack Query
  • Full TypeScript support

Useful Resources

Need Help?

  • Join our Discord
  • Follow us on Twitter
  • Contact the mobile development team

License

This project is licensed under the GNU General Public License version 3. See the main project repository for full license details.