{"id":44068366,"url":"https://github.com/marketcalls/OpenTerminal","last_synced_at":"2026-02-20T01:00:56.076Z","repository":{"id":258616134,"uuid":"869002619","full_name":"marketcalls/OpenTerminal","owner":"marketcalls","description":"OpenSource - Trading Terminal for Indian Traders","archived":false,"fork":false,"pushed_at":"2025-07-01T09:05:48.000Z","size":245,"stargazers_count":21,"open_issues_count":0,"forks_count":22,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-13T03:44:06.374Z","etag":null,"topics":["daisyui","flask","monitor-trades","placeorder","python","redis","sqlite-database","trading-terminal","voice-orders"],"latest_commit_sha":null,"homepage":"https://marketcalls.in","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/marketcalls.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2024-10-07T14:52:44.000Z","updated_at":"2025-08-04T15:54:58.000Z","dependencies_parsed_at":"2025-07-01T18:47:20.614Z","dependency_job_id":null,"html_url":"https://github.com/marketcalls/OpenTerminal","commit_stats":null,"previous_names":["marketcalls/openterminal"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/marketcalls/OpenTerminal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marketcalls%2FOpenTerminal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marketcalls%2FOpenTerminal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marketcalls%2FOpenTerminal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marketcalls%2FOpenTerminal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marketcalls","download_url":"https://codeload.github.com/marketcalls/OpenTerminal/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marketcalls%2FOpenTerminal/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29637914,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T22:32:43.237Z","status":"ssl_error","status_checked_at":"2026-02-19T22:32:38.330Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["daisyui","flask","monitor-trades","placeorder","python","redis","sqlite-database","trading-terminal","voice-orders"],"created_at":"2026-02-08T04:00:24.671Z","updated_at":"2026-02-20T01:00:56.069Z","avatar_url":"https://github.com/marketcalls.png","language":"HTML","funding_links":[],"categories":["HTML"],"sub_categories":[],"readme":"# Open Terminal - Trading Dashboard\n\nOpen Terminal is a Flask-based trading dashboard that provides a secure, feature-rich platform for traders using AngelOne API. It offers real-time market data, watchlist management, and comprehensive trading capabilities.\n\n## Key Features\n\n### Trading Features\n- **Real-time Market Data**: Live streaming of market prices and depth\n- **Watchlist Management**: Create and manage up to 5 watchlists\n- **Order Management**: Place, modify, and track orders\n- **Portfolio Overview**: View holdings, positions, and P\u0026L\n- **Market Depth**: Level 2 order book display\n- **Symbol Search**: Extensive search functionality for adding instruments\n\n### Technical Features\n- **Secure Authentication**: AngelOne API integration for secure login\n- **WebSocket Integration**: Real-time data updates\n- **Redis Caching**: Optimized performance with Redis\n- **Modular Architecture**: Well-organized, maintainable codebase\n- **Responsive Design**: Modern UI using Tailwind CSS and DaisyUI\n\n## Technology Stack\n\n### Backend\n- Flask \u0026 Flask extensions (SQLAlchemy, Login, WTF)\n- SQLite Database\n- Redis for caching\n- WebSocket for real-time data\n- APScheduler for task scheduling\n\n### Frontend\n- Tailwind CSS with DaisyUI\n- Modern JavaScript (ES6+)\n- Modular component architecture\n- WebSocket client integration\n\n## Quick Start\n\n### Prerequisites\n- Python 3.9+\n- Redis Server\n- Git\n\n### Installation\n\n1. **Clone the repository:**\n```bash\ngit clone https://github.com/marketcalls/OpenTerminal.git\ncd OpenTerminal\n```\n\n2. **Set up Python environment:**\n```bash\npython -m venv venv\nsource venv/bin/activate  # On Windows: venv\\Scripts\\activate\npip install -r requirements.txt\n```\n\n3. **Configure environment:**\nCreate `.env` file with:\n```env\nSECRET_KEY=your-secret-key\nSQLALCHEMY_DATABASE_URI=sqlite:///open_terminal.db\nREDIS_URL=redis://localhost:6379/0\n```\n\n4. **Start Redis server**\n\n5. **Run the application:**\n```bash\npython app.py\n```\n\nAccess at `http://127.0.0.1:5000`\n\n## Project Structure\n\n```\nopenterminal/\n├── app.py              # Application entry point\n├── config.py           # Configuration settings\n├── extensions.py       # Flask extensions\n├── models.py          # Database models\n├── routes/            # Route modules\n│   ├── auth.py        # Authentication\n│   ├── dashboard/     # Dashboard features\n│   └── orders/        # Order management\n├── static/            # Static assets\n│   ├── css/          # Stylesheets\n│   └── js/           # JavaScript modules\n└── templates/         # HTML templates\n```\n\n## Development\n\n### Code Organization\n- **Routes**: Organized by feature in separate modules\n- **Services**: Business logic separated from routes\n- **Models**: SQLAlchemy models for data structure\n- **Static**: Modular JavaScript and CSS assets\n- **Templates**: Jinja2 templates with component structure\n\n### Best Practices\n- Follows Flask application factory pattern\n- Implements proper error handling\n- Uses type hints and docstrings\n- Maintains consistent code style\n- Includes comprehensive logging\n\n## Production Deployment\n\nSee [DEPLOYMENT.md](DEPLOYMENT.md) for detailed production deployment instructions.\n\n## License\n\nGNU Affero General Public License v3.0 (AGPL-3.0)\n\nSee [LICENSE](LICENSE) file for complete terms.\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Submit a pull request\n4. Open an issue for discussion\n\n---\nBuilt with ❤️ for the trading community\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarketcalls%2FOpenTerminal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarketcalls%2FOpenTerminal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarketcalls%2FOpenTerminal/lists"}