Skip to content

Latest commit

 

History

History
26 lines (19 loc) · 1.96 KB

contributing.md

File metadata and controls

26 lines (19 loc) · 1.96 KB

Contributing

Flame AI is intended to be contributor-friendly. It's built on top of Gluegun, which is a popular node CLI framework also built by Infinite Red.

Get Started

  1. Clone this repo or your fork (git clone git@github.com:infinitered/flame.git)
  2. yarn install
  3. yarn link
  4. flame --help

Architecture

Like most Gluegun command-line apps, the commands live in src/commands and there are utility functions in src/utils. There's also a bunch of ai related functionality in src/ai. There are a few React Native specific features in src/react-native. Exported types are in src/types.ts.

Contributing Tips (note this can change as the project evolves):

  • We want to keep the folder structure very flat. We don't want super deep nested folders.
  • Generally speaking, keep the commands as thin as possible, primarily focused on user interaction. Put the bulk of the logic in other folders.
  • If something is React Native specific, put it in the src/reactnative folder.
  • If you're building something for a different technology and it's specific to that technology, you can make another folder for it. For example, src/flutter.
  • If you're building something that's not specific to any technology, put it in the src/utils folder.
  • If you're building something that's very AI related, put it in the src/ai folder. Mostly things like accessing other AI cloud providers/LLMs. (Most of the AI code will still reside in utils)
  • The src/recipes folder is for recipes that are used by the experimental convert command. They are written in plain English and are mostly a list of examples. See the AsyncStorage-to-mmkv recipe for an example.
  • Keep source files small. This means a lot of small files will be created, but that's okay. This helps us build Flame AI using Flame AI. :-)
  • Add local types to the top of files, and exported types to src/types.ts. Bias toward type over interface.