{"id":28573676,"url":"https://github.com/jeffasante/chatroom.go","last_synced_at":"2026-04-17T01:02:39.475Z","repository":{"id":296486521,"uuid":"993557243","full_name":"jeffasante/chatroom.go","owner":"jeffasante","description":"Go-powered real-time chatroom with a distinctive terminal-inspired interface. Uses Gin \u0026 GORM.","archived":false,"fork":false,"pushed_at":"2025-05-31T02:39:04.000Z","size":103,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-06-10T21:19:25.212Z","etag":null,"topics":["chatroom","gin","golang","gorm","real-time","websocket"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jeffasante.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-31T02:37:29.000Z","updated_at":"2025-05-31T02:42:27.000Z","dependencies_parsed_at":"2025-05-31T13:59:20.273Z","dependency_job_id":"a39b0101-e02d-4e09-8aa0-9917f4289732","html_url":"https://github.com/jeffasante/chatroom.go","commit_stats":null,"previous_names":["jeffasante/chatroom.go"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jeffasante/chatroom.go","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffasante%2Fchatroom.go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffasante%2Fchatroom.go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffasante%2Fchatroom.go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffasante%2Fchatroom.go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jeffasante","download_url":"https://codeload.github.com/jeffasante/chatroom.go/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffasante%2Fchatroom.go/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264504615,"owners_count":23618831,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chatroom","gin","golang","gorm","real-time","websocket"],"created_at":"2025-06-10T21:18:59.906Z","updated_at":"2026-04-17T01:02:39.427Z","avatar_url":"https://github.com/jeffasante.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Chatroom\n\nA real-time chat application built with Go and WebSockets, featuring a retro terminal aesthetic. Users can create private chatrooms with secret codes and chat instantly with friends.\n\n## Features\n\n- User authentication with secure password hashing\n- Create and join private chatrooms using secret codes\n- Real-time messaging with WebSocket connections\n- Room management (rename, delete, view members)\n- Retro terminal-style UI with monospace fonts\n- Responsive design for desktop and mobile\n\n## Tech Stack\n\n**Backend:**\n- Go with Gin web framework\n- SQLite database with GORM\n- WebSocket connections for real-time chat\n- bcrypt for password security\n\n**Frontend:**\n- Vanilla JavaScript\n- CSS with custom terminal styling\n- HTML templates\n\n## Getting Started\n\n1. Clone the repository\n2. Install dependencies:\n   ```bash\n   go mod tidy\n   ```\n3. Run the application:\n   ```bash\n   go run *.go\n   ```\n4. Open your browser to `http://localhost:8080`\n\n## Project Structure\n\n```\nchatroom/\n├── main.go                 # Server setup and routing\n├── handlers/               # HTTP request handlers\n│   ├── auth.go            # Login/signup functionality\n│   ├── chatroom.go        # Room creation and joining\n│   ├── websocket.go       # Real-time messaging\n│   └── room_management.go # Room settings and deletion\n├── middleware/\n│   └── auth.go            # Authentication middleware\n├── models/\n│   └── models.go          # Database models\n├── templates/             # HTML pages\n└── static/                # CSS and JavaScript files\n```\n\n## Usage\n\n1. **Sign up** for a new account or log in\n2. **Create a room** with a custom name and secret password\n3. **Share the room code** with friends so they can join\n4. **Start chatting** in real-time\n5. **Manage your rooms** through the settings panel\n\n## Database Schema\n\nThe application uses four main tables:\n- **Users** - account information and authentication\n- **Chatrooms** - room details and ownership\n- **Messages** - chat messages with timestamps\n- **Memberships** - user-room relationships\n\n## Screenshots\n\n### Login Page\n![Login](assets/1.png)\n\n### Dashboard\n![Dashboard](assets/2.png)\n\n### Chat Room\n![Chat Room](assets/3.png)\n\n## Notes\n\nThis project was built as a learning exercise to explore Go web development, WebSocket implementation, and real-time application architecture. The retro UI design is inspired by classic terminal interfaces.\n\nThe application handles user sessions in memory, which works well for development but would need Redis or similar for production use. Message history is persisted in SQLite and loaded when users join rooms.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeffasante%2Fchatroom.go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjeffasante%2Fchatroom.go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeffasante%2Fchatroom.go/lists"}