Contributors: Stephen, Hasan, Adam, Ivan, Ellis, Hongzhan
This is an open chat interface for both personal use and for hosting. The intended audience is the power user, which values privacy, customization, and a cool aesthetic.
- Matrix Rain Background
- Login without Google
- Themes and Colors
- Temporary Chats
- Save and delete Chat History
- Model Selection
- External API integration
- Token Count (local models only)
- Weather Report tool (experimental)
- Calculator Tool (experimental)
This whole stack uses three Docker containers:
- MongoDB Database
- Ollama AI
- SHA-257 Frontend and API
Our stack features:
- MongoDB for the DB
- ExpressJS for the API
- Vite for the frontend
- NodeJS for the runtime
Additional tools include Docker, Jasmine, CucumberJS, Puppeteer.
You can run the following command on any server which has git, docker, and docker-compose:
git clone https://github.com/Purple-Chicken/javascript-makes-me-vomit.git ;
npm run docker:prod
And when you run docker ps -a, you should see the three containers.
When you want to shut down, you simply run npm run docker:prod:down to take down all the containers.
The 3 main conatiners we have running are ollama for the local AI hosting, MongoDB for the noSQL database, and sha257 for the frontend and API.
In a dev environment, the sha257 container is ommitted directly. Instead, it uses your local version of the project directory. You can change it live, and interact with the DB and the AI.
In a prod environment, the project directory is cloned into a docker container, which then is built and served over the standard port 5000.
First, make sure you have the project dependencies installed: python3, git, npm, docker, node.
Second, make sure you have the repo locally:
git clone https://github.com/Purple-Chicken/javascript-makes-me-vomit.git
Once you cd into the repository, you are all set! You can run the dev environment using:
npm run docker:dev
And if you want to shutdown the service, you would run npm run docker:dev:down
When starting your session, it's important to create a new branch for a feature. You make a new branch by running:
git branch -b [new-branch-name]
This way, you don't push directly to main and put potentially risky code in production.
If you want to work on an existing branch, you can run:
git checkout [existing-branch-name]
Once you have done something (can be a small commit), you can stage your changesand create a commit by running:
git add [path/to/file(s)] ;
git commit -m "[insert message here]" ;
After you have a few commits, you can sync to remote.
You can monitor your progress with git status. It tells you what branch you are working on, how many commits you are ahead/behind,
If you have created a new branch
git push --set-upstream origin [new-branch-name]
And, assuming you are are not on main, you can push onto your branch.
In GitHub, you can make a pull request if you want to merge to main.