Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/siddhant-vij/pokechat-universe
Interactive AI-powered Pokedex where users can collect and chat with Pokemon using real-time communication.
https://github.com/siddhant-vij/pokechat-universe
htmx llama3 oauth2 ollama pokedex postgresql redis serversentevents tailwindcss templ
Last synced: 2 days ago
JSON representation
Interactive AI-powered Pokedex where users can collect and chat with Pokemon using real-time communication.
- Host: GitHub
- URL: https://github.com/siddhant-vij/pokechat-universe
- Owner: siddhant-vij
- License: mit
- Created: 2024-08-25T19:07:47.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2024-09-13T18:59:39.000Z (about 2 months ago)
- Last Synced: 2024-10-17T21:06:44.709Z (20 days ago)
- Topics: htmx, llama3, oauth2, ollama, pokedex, postgresql, redis, serversentevents, tailwindcss, templ
- Language: Go
- Homepage:
- Size: 172 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# PokeChat Universe
A full-stack web application built using the GoTTH stack (Golang, Templ, TailwindCSS, HTMX). The app allows users to explore a universe of Pokémon, collect their favorites, and engage in AI-driven conversations with them.
- Why? I mean why not?
Leveraging a local instance of the Llama3 model via Ollama, the app provides real-time chat features powered by SSE (Server-Sent Events) for a seamless experience.
The web app also includes OAuth2/OIDC-based login via Auth0, dynamic frontend features (search, sort, pagination), and a fully scalable backend with persistent chat histories stored in PostgreSQL. Designed with performance and scalability in mind, the app is capable of handling high volumes of concurrent users while maintaining a smooth, responsive interface.
## Table of Contents
1. [Product Features](#product-features)
1. [Technical Scope](#technical-scope)
1. [Future Improvements](#future-improvements)
1. [Contributing](#contributing)
1. [License](#license)
## Product Features
- **Explore Pokémon Universe**: Browse and filter a comprehensive list of Pokémon.
- **OAuth2/OIDC Authentication**: Secure user login with Auth0.
- **Collect Pokémon**: Add favorite Pokémon to your personal collection.
- **User-Specific Pokedex**: View all collected Pokémon in a dedicated tab.
- **Search, Sort, and Load More**: Dynamic frontend with real-time search, sorting options, and pagination for large lists.
- **Dynamic Frontend Updates**: Seamless user interactions using HTMX without full-page reloads.
- **Real-Time AI Chat**: Engage in conversations with collected Pokémon powered by Llama3 via Ollama.
- **Persistent Chat Histories**: Conversations are stored in a database for later retrieval.
## Technical Scope
- **Frontend**: TailwindCSS for styling, HTMX for dynamic interactions, and Templ for rendering.
- **Backend**: Golang-based API, handling user sessions, chat logic, and serving data via REST.
- **Database**: PostgreSQL for relational data (users, Pokémon, chat histories) with Redis for session storage.
- **Authentication**: OAuth2/OIDC-based login with Auth0.
- **AI Integration**: Local Llama3 instance running via Ollama for generating contextual responses in real-time.
- **Real-Time Communication**: Server-Sent Events for streaming AI responses to the frontend.
## Future Improvements
- **Microservices**: Split the app into microservices to handle specific tasks like chat, authentication, and AI responses independently.
- **Database Partitioning and Indexing**: Implement sharding, table partitioning, and advanced indexing strategies as chat histories grow.
- **Horizontal Scaling**: Use container orchestration (like Kubernetes) to handle increased load across multiple instances.
- **Message Queues for AI Processing**: Offload AI requests to message queues (e.g., RabbitMQ) for more efficient handling of heavy processing tasks.
- **Data Archival**: Implement strategies for archiving older chat histories to keep the primary database lean.
## Contributing
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.
1. **Fork the Project**
2. **Create your Feature Branch**:
```bash
git checkout -b feature/AmazingFeature
```
3. **Commit your Changes**:
```bash
git commit -m 'Add some AmazingFeature'
```
4. **Push to the Branch**:
```bash
git push origin feature/AmazingFeature
```
5. **Open a Pull Request**
## License
Distributed under the MIT License. See [`LICENSE`](https://github.com/siddhant-vij/PokeChat-Universe/blob/main/LICENSE) for more information.