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
- Website: https://anand-kamble.github.io/
- Repositories: 24
- Profile: https://github.com/anand-kamble
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