https://github.com/anand-kamble/ego-novel

https://github.com/anand-kamble/ego-novel

Science Score: 13.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.3%) to scientific vocabulary
Last synced: 9 months ago · JSON representation

Repository

Basic Info
  • Host: GitHub
  • Owner: anand-kamble
  • Language: TypeScript
  • Default Branch: main
  • Size: 278 KB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created over 1 year ago · Last pushed over 1 year ago
Metadata Files
Changelog

https://github.com/anand-kamble/ego-novel/blob/main/

# Ego Novel AI

https://github.com/user-attachments/assets/e2cbb666-a96b-4c1b-a525-07d58b8108fa


## Features
- Generate content using AI (Use OpenAI or Anthropic to generate the next sentence of a story)
- Translate you story into different languages using AI
- Save your stories in a database.
- User accounts can be created.
- dark/light themes in UI

## How to run the application
#### Prerequisites
- Python
- NodeJS
- Poetry

A `.env` file is needed to run the application which will be placed at the root. This file will contain the following:
```
SUPABASE_URL=https://fjcuthovlaqyfgksapyv.supabase.co
SUPABASE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImZqY3V0aG92bGFxeWZna3NhcHl2Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3MzMzMjc4NDgsImV4cCI6MjA0ODkwMzg0OH0.3wJGqmca0TFjxdwToYgn59PAx5VG3nue3WLco4pF0ho
OPENAI_API_KEY=
ANTHROPIC_API_KEY=
```

Once you all of these ready, please follow the steps below:

1. Clone the repo
   ```bash
   git clone https://github.com/anand-kamble/ego-novel
   ```
2. Install python dependencies
   ```bash
   poetry install
   ```
3. Install NodeJS dependencies in frontend folder
   ```bash
   cd frontend
   yarn install
   ```
   if you don't have `yarn` you can install it by `npm i -g yarn`
4. To start the backend we will need poetry enviroment to activate the poetry env
   ```bash
   cd .. # Coming back to the root of the project
   poetry shell
   ```
5. Once the enviroment is active
   ```bash
   bash start.sh
   ```

## Tool/Frameworks Used
- Backend
   - FastAPI
   - Langgraph
   - Supabase
   - uuid
- Frontend
  - ReactJS with TypeScript
  - Redux
  - RadixUI
  - Axios
- Project Management
  - Linear
  - GitHub
  - Commitizen


## Project details
### AI
To generate the completions for the story, I have used langgraph. I have used `StateGraph` for this application, which has memory. I have previosly worked with llama-index workflows and found it very similar to langgraph.  
I am using two different graphs in the project since Anthropic does not allow more than one system prompt. I my application for OpenAI I am adding system message when generating the next sentence, I did that to prevent the model going off track as I am using GPT 3.5.  
Currently, I am adding the story directly into the prompt but there are more sophisticated ways of doing that such as RAG that will be useful when adding large documents.  

I did try using the `PostgresSaver` for memory but I was not able to successfully connect it to the supabase database. So I ended up using `MemorySaver` which store the checkpoints in memory.  

Furthermore, I would like to talk about the `tools` that can be added into langgraph which are the functions that can be called by the LLM, I do wanted to use those but could not find a suitable use for that. But I would love to implement those in the graph as well.
This AI predictions can be improved a lot by using better Prompt Formats and storing the generated messeges and using those in the LLMChain for completions.

### Backend  
The backend is divided into multiple routers, I did so it is easiar to scale the application and makes it easy to manage. I used `FastAPI` for the APIs and `Supabase` for connecting to database. I have not implemented the Authentication methods like OAuth etc. as it will need more time.  
In some function I have defined the types since I was running out of time.

### Frontend 
I have used ReactJS with TypeScript and implemented the necessary tools like Router, Redux, i18n and Radix. I have implemented all the API calls through Redux which is the best practice as per I am aware of. There are a lot more functions that need to be implemented like email pattern validation, loading screens, Error Toasts and a lot more. But due to time contraints I have not done that yet. 

### Project Setup
I am using Poetry for package management in Python and Yarn in Node. I have also added commitizen into the project to keep the commit messages in a standard format.  
Also, I did use Linear to manage the project by splitting it into tasks and also did make different github branches for feature and then merged those using Pull Requests.

### Database
For database I am using Supabase, where I have created tables with appropiate columns. I am using supabase python package to interact with it.

Owner

  • Name: Anand Kamble
  • Login: anand-kamble
  • Kind: user
  • Location: Tallahassee, FL
  • Company: Florida State University

Graduate student in FSU Scientific Computing

GitHub Events

Total
  • Issue comment event: 4
  • Push event: 12
  • Pull request event: 8
  • Create event: 6
Last Year
  • Issue comment event: 4
  • Push event: 12
  • Pull request event: 8
  • Create event: 6

Dependencies

frontend/package.json npm
  • @radix-ui/themes ^3.1.6
  • @reduxjs/toolkit ^1.8.1
  • @testing-library/jest-dom ^5.16.4
  • @testing-library/react ^13.0.1
  • @testing-library/user-event ^14.1.1
  • @types/jest ^27.4.1
  • @types/node ^17.0.25
  • @types/react ^18.0.6
  • @types/react-dom ^18.0.2
  • react ^18.3.1
  • react-dom ^18.3.1
  • react-redux ^8.0.1
  • react-router ^7.0.2
  • react-scripts 5.0.1
  • typescript ^4.6.0
  • web-vitals ^2.1.0
frontend/yarn.lock npm
  • 1350 dependencies
poetry.lock pypi
  • aiohappyeyeballs 2.4.4
  • aiohttp 3.11.9
  • aiosignal 1.3.1
  • annotated-types 0.7.0
  • anyio 4.6.2.post1
  • argcomplete 3.5.1
  • attrs 24.2.0
  • certifi 2024.8.30
  • charset-normalizer 3.4.0
  • click 8.1.7
  • colorama 0.4.6
  • commitizen 4.0.0
  • decli 0.6.2
  • deprecation 2.1.0
  • dnspython 2.7.0
  • email-validator 2.2.0
  • fastapi 0.115.6
  • fastapi-cli 0.0.6
  • frozenlist 1.5.0
  • gotrue 2.11.0
  • h11 0.14.0
  • h2 4.1.0
  • hpack 4.0.0
  • httpcore 1.0.7
  • httptools 0.6.4
  • httpx 0.27.2
  • hyperframe 6.0.1
  • idna 3.10
  • jinja2 3.1.4
  • markdown-it-py 3.0.0
  • markupsafe 3.0.2
  • mdurl 0.1.2
  • multidict 6.1.0
  • packaging 24.2
  • postgrest 0.18.0
  • prompt-toolkit 3.0.36
  • propcache 0.2.1
  • pydantic 2.10.3
  • pydantic-core 2.27.1
  • pygments 2.18.0
  • python-dateutil 2.9.0.post0
  • python-dotenv 1.0.1
  • python-multipart 0.0.19
  • pyyaml 6.0.2
  • questionary 2.0.1
  • realtime 2.0.6
  • rich 13.9.4
  • rich-toolkit 0.11.1
  • shellingham 1.5.4
  • six 1.16.0
  • sniffio 1.3.1
  • starlette 0.41.3
  • storage3 0.9.0
  • supabase 2.10.0
  • supafunc 0.7.0
  • termcolor 2.5.0
  • tomlkit 0.13.2
  • typer 0.15.0
  • typing-extensions 4.12.2
  • uvicorn 0.32.1
  • uvloop 0.21.0
  • watchfiles 1.0.0
  • wcwidth 0.2.13
  • websockets 13.1
  • yarl 1.18.3
pyproject.toml pypi
  • commitizen ^4.0.0
  • fastapi ^0.115.6
  • python ^3.12
  • python-dotenv ^1.0.1
  • supabase ^2.10.0
  • uvicorn ^0.32.1