{"id":26267457,"url":"https://github.com/oslabs-beta/watchtower","last_synced_at":"2025-04-30T19:08:38.755Z","repository":{"id":247138124,"uuid":"822778345","full_name":"oslabs-beta/watchtower","owner":"oslabs-beta","description":"Monitor and analyze DynamoDB metrics and interpret this data with amazon's bedrock AI.","archived":false,"fork":false,"pushed_at":"2024-08-26T15:53:09.000Z","size":20414,"stargazers_count":30,"open_issues_count":5,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-30T19:07:49.500Z","etag":null,"topics":["ai","analytics","aws","bedrock","data-visualization","dynamodb","metrics","monitoring","react","visualization-tools"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oslabs-beta.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},"funding":{"github":"open-source-labs","custom":["https://donorbox.org/donations-to-oslabs-inc"]}},"created_at":"2024-07-01T19:59:30.000Z","updated_at":"2025-03-07T03:17:19.000Z","dependencies_parsed_at":"2024-07-18T19:10:38.532Z","dependency_job_id":"17d34f7a-d0db-41be-a650-0ac136bdeaf8","html_url":"https://github.com/oslabs-beta/watchtower","commit_stats":null,"previous_names":["oslabs-beta/watchtower"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oslabs-beta%2Fwatchtower","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oslabs-beta%2Fwatchtower/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oslabs-beta%2Fwatchtower/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oslabs-beta%2Fwatchtower/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oslabs-beta","download_url":"https://codeload.github.com/oslabs-beta/watchtower/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251767187,"owners_count":21640469,"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":["ai","analytics","aws","bedrock","data-visualization","dynamodb","metrics","monitoring","react","visualization-tools"],"created_at":"2025-03-14T04:16:56.725Z","updated_at":"2025-04-30T19:08:38.736Z","avatar_url":"https://github.com/oslabs-beta.png","language":"TypeScript","readme":"# WatchTower - A DynamoDB Visualization Tool\n\n## Table of Contents\n\n- [Description](#description)\n- [Tech Stack](#tech-stack)\n- [Key Features](#key-features)\n- [Getting Started](#getting-started)\n- [Upcoming Features](#upcoming-features)\n- [Contributing](#contributing)\n- [Meet The Team](#meet-the-team)\n- [Where To Find Us](#where-to-find-us)\n\n## Description\n\nWatchTower is a robust visualization tool for user's Amazon DynamoDB capacity. Developers can often have difficulty analyzing and interpreting DynamoDB provisioning metrics due to the complexities of existing monitoring tools. WatchTower centralizes this data and allows users to generate metric data from DynamoDB usage and to visualize this data using our graphical UI. You can even ask for more input utilizing Amazon's Bedrock AI from within our application! Additionally, you can store and access this historical data and use this information to find usage patterns to form strategies on how to optimize and make your DynamoDB usage more efficient.\n\n## Tech Stack\n\n![React](https://img.shields.io/badge/react-%2320232a.svg?style=for-the-badge\u0026logo=react\u0026logoColor=%2361DAFB)\n![JavaScript](https://img.shields.io/badge/javascript-%23323330.svg?style=for-the-badge\u0026logo=javascript\u0026logoColor=%23F7DF1E)\n![TypeScript](https://img.shields.io/badge/typescript-%23007ACC.svg?style=for-the-badge\u0026logo=typescript\u0026logoColor=white)\n![NodeJS](https://img.shields.io/badge/node.js-6DA55F?style=for-the-badge\u0026logo=node.js\u0026logoColor=white)\n![Express.js](https://img.shields.io/badge/express.js-%23404d59.svg?style=for-the-badge\u0026logo=express\u0026logoColor=%2361DAFB)\n![HTTP](https://img.shields.io/badge/HTTP-394EFF?style=for-the-badge)\n![AWS](https://img.shields.io/badge/AWS-%23FF9900.svg?style=for-the-badge\u0026logo=amazon-aws\u0026logoColor=white)\n![Jest](https://img.shields.io/badge/-jest-%23C21325?style=for-the-badge\u0026logo=jest\u0026logoColor=white)\n![Webpack](https://img.shields.io/badge/webpack-%238DD6F9.svg?style=for-the-badge\u0026logo=webpack\u0026logoColor=black)\n![MUI](https://img.shields.io/badge/MUI-%230081CB.svg?style=for-the-badge\u0026logo=mui\u0026logoColor=white)\n![MONGODB](https://img.shields.io/badge/MongoDB-4EA94B?style=for-the-badge\u0026logo=mongodb\u0026logoColor=white)\n![MONGOOSE](https://img.shields.io/badge/Mongoose-880000.svg?style=for-the-badge\u0026logo=Mongoose\u0026logoColor=white)\n![Chart.js](https://img.shields.io/badge/chart.js-F5788D.svg?style=for-the-badge\u0026logo=chart.js\u0026logoColor=white)\n\n## Key Features\n\n### AWS Integration\nSeamlessly integrate WatchTower with your AWS account by providing an Access Token and Secret Access Token.\n\n![AWS Acc Info](https://github.com/user-attachments/assets/90a3d36b-ca49-46bc-b429-e458fbebfe9d)\n\n### Centralized Dashboard\nWatchTower provides a clean, easy-to-use dashboard to observe your AWS DynamoDB provisioning levels and usage. You can easily select different tables from your DynamoDB account to monitor, and then specify the date range you would like metrics for.\n\n![Analyze Prov](https://github.com/user-attachments/assets/32d5a9f2-e104-4287-9503-d33baeb4ff52)\n\n\n### AI Integration\nWatchTower integrates with Amazon’s Bedrock to provide you meaningful insights and recommendations on the provisioning levels and usage for your DynamoDB account.\n\n![Amazon Bedrock Analysis](https://github.com/user-attachments/assets/5743ddbc-67b5-46cc-b392-a66d0db92813)\n\n\n### Past Metrics Storage\nWe offer the ability to store past metrics that you’ve observed so that you can easily regenerate metric graphs to compare trends in your DynamoDB provisioning and usage data over time. (**Note: If you opt-in to this feature, we will dynamically create a new table in your DynamoDB account to hold past metrics).\n\n![View Saved Reports](https://github.com/user-attachments/assets/a7a89e2c-205a-4fef-9ade-8def139cf058)\n\n\n### Multi-User Functionality\nWhile our app is hosted locally for your peace of mind, WatchTower has multi-user functionality and full authorization and authentication to protect each user’s data if they are on a shared computer. Create an account or easily sign in with GitHub.\n\n![Login Screenshot](https://github.com/user-attachments/assets/46376579-b4d4-41ec-9018-4eceef1894b3)\n\n### Light and Dark Mode User Interface\nChoose your preferred theme for interacting with the app.\n\n![Dark Mode](https://github.com/user-attachments/assets/106d2460-5128-4927-af69-7b37fbafce4d)\n\n### Credential Security\nYour AWS credentials are stored securely in your local environment and never shared anywhere outside of your local machine - we prioritize your security!\n\n\n\n## Getting Started\n\nGetting started with WatchTower is simple!\n\n1. **Fork GitHub repo.**\n2. **Clone the repo into VS Code.**\n3. **Create a `.env` file \u003cstrong\u003e\u003cu\u003ein the server folder\u003c/u\u003e\u003c/strong\u003e using below template**\n    ```sh\n    # AWS Credentials for Connecting AWS\n    AWS_ACCESS_KEY_ID=\"your_aws_access_key_id\"\n    AWS_SECRET_ACCESS_KEY=\"your_aws_secret_access_key\"\n    REGION=\"your_aws_region\"\n    ```\n4. **Navigate to your cloned repo and open a terminal. Run the following commands:**\n   ```sh\n   npm i\n   npm start\n   ```\n - If localhost:3000 does not automatically open in your browser, open this link: http://localhost:3000/\n5. Sign Up: Create an account on our website, or login with GitHub.\n6. Connect Your DynamoDB: Use our easy-to-follow guide to connect your DynamoDB tables to WatchTower.\n   - Warning: If you use the AWS Account Info to update your AWS Key, you have to restart the application!\n7. Generate metric data: Input necessary information, such as the table you wish to analyze and the time period you wish to see database metrics.\n8. As simple as that, your metric data and visual data is generated!\n9. Generate AI insight: Users can also generate insights from Amazon's Bedrock AI simply by pressing a button.\n10. Save table metrics/graphs: Users can save their generated analysis and metric data to their DynamoDB database by clicking on the “save analysis” button.\n11. Analyze Historical Data: Dive into historical metrics to identify trends and optimize performance by navigating over to the reports page.\n    - AWS Bedrock has a lot of AI Model: https://docs.aws.amazon.com/bedrock/latest/userguide/model-ids.html Here is the list for the Model name and its ID. The model that we are using is ‘Mistral 7B Instruct’.\n    - AWS Bedrock is not free, they have distinct price for model. Here is the link for pricing: https://aws.amazon.com/bedrock/pricing/?refid=ft_card\n    - Not all model has responsesteram, if the model you want use dont have responsestream, you can use invokemodelcommand method! https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/bedrock-runtime/command/InvokeModelCommand/\n    - In order to grant access for specific AI model, you have to https://aws.amazon.com/bedrock/ and login, on the left side bar, choose Foundation models -\u003e Base models and click whatever model you want. Inside the model Overview, there is a button ‘Request model access’. Then you will be all set!\n\n\n\n\n## Upcoming Features\n- Customizable alerts and notifications ⏳\n- Analyze auto-scaling capacity ⏳\n- Analyze on-demand capacity ⏳\n- Customizable dashboard ⏳\n- Expanding report data to aggregate multiple instances of saved reports 🙏🏻\n- Integrate capacity pricing options to Bedrock AI recommendations to provide more meaningful insights 🙏🏻\n\n  ⏳ = In Progress;  🙏🏻 = Looking for contributors! \n\n## Contributing\nIf you would like to contribute to this project, please follow the below steps:\n\n1. Fork the GitHub repo.\n2. Create your feature branch:\n      ```sh\n      git checkout -b feature-YourFeature\n4. Commit your changes:\n      ```sh\n      git commit -m \"Add feature\"\n5. Push to your feature branch: (git push origin feature-YourFeature)\n6. Open a pull request. Please follow the below template for your pull request.\n- Pull Request Title\n- Description of Feature Branch\n- Why the change was needed\n- How the change was implemented\n\n## Meet The Team\n\n\u003cdiv style=\"display: flex; justify-content: center;\"\u003e\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd style=\"text-align: center; padding: 10px;\"\u003e\n      \u003cimg src=\"https://drive.google.com/uc?export=view\u0026id=17KDjj9yn_AKJJ41DHijzIz7aX7Ya9tQv\" alt=\"Erik\" width=\"100\" style=\"border-radius: 50%;\"\u003e\n      \u003cbr\u003eErik Gao\n      \u003cbr\u003e\u003ca href=\"https://github.com/KIREG19\"\u003eGitHub\u003c/a\u003e\n      \u003cbr\u003e\u003ca href=\"https://www.linkedin.com/in/erikgaogg/\"\u003eLinkedIn\u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd style=\"text-align: center; padding: 10px;\"\u003e\n      \u003cimg src=\"https://drive.google.com/uc?export=view\u0026id=1ZCAgpJy2Msswi_3On4JPhAJg2lqZFHZZ\" alt=\"James\" width=\"100\" style=\"border-radius: 50%;\"\u003e\n      \u003cbr\u003eJames Coen\n      \u003cbr\u003e\u003ca href=\"https://github.com/jamescoen\"\u003eGitHub\u003c/a\u003e\n      \u003cbr\u003e\u003ca href=\"https://www.linkedin.com/in/james-coen-2a00a3148/\"\u003eLinkedIn\u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd style=\"text-align: center; padding: 10px;\"\u003e\n      \u003cimg src=\"https://drive.google.com/uc?export=view\u0026id=1LXKcsG7xmbbIVCnsdTwouOuMX1HL6HjO\" alt=\"Lauren\" width=\"100\" style=\"border-radius: 50%;\"\u003e\n      \u003cbr\u003eLauren Felty\n      \u003cbr\u003e\u003ca href=\"https://github.com/LaurenFelty\"\u003eGitHub\u003c/a\u003e\n      \u003cbr\u003e\u003ca href=\"https://www.linkedin.com/in/lauren-felty/\"\u003eLinkedIn\u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd style=\"text-align: center; padding: 10px;\"\u003e\n      \u003cimg src=\"https://drive.google.com/uc?export=view\u0026id=1Wprg3i-j_KIZf816Wi1utsjnaH6w7Jgs\" alt=\"Mike\" width=\"100\" style=\"border-radius: 50%;\"\u003e\n      \u003cbr\u003eMike Bui\n      \u003cbr\u003e\u003ca href=\"https://github.com/MikeBui91\"\u003eGitHub\u003c/a\u003e\n      \u003cbr\u003e\u003ca href=\"https://www.linkedin.com/in/mike-bui09/\"\u003eLinkedIn\u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd style=\"text-align: center; padding: 10px;\"\u003e\n      \u003cimg src=\"https://drive.google.com/uc?export=view\u0026id=180dmu9oKMT7fu_sQVLo6gqSSOADei1-Z\" alt=\"Piero\" width=\"100\" style=\"border-radius: 50%;\"\u003e\n      \u003cbr\u003ePiero Espejo\n      \u003cbr\u003e\u003ca href=\"https://github.com/Piero914\"\u003eGitHub\u003c/a\u003e\n      \u003cbr\u003e\u003ca href=\"https://www.linkedin.com/in/piero-espejo-6813a9b0/\"\u003eLinkedIn\u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c/div\u003e\n\n## Where To Find Us\n- [Website](https://watch-tower.co/)\n- [LinkedIn](https://www.linkedin.com/in/watchtower-db/)\n- [X](https://x.com/WatchTower_DB)\n\n","funding_links":["https://github.com/sponsors/open-source-labs","https://donorbox.org/donations-to-oslabs-inc"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foslabs-beta%2Fwatchtower","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foslabs-beta%2Fwatchtower","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foslabs-beta%2Fwatchtower/lists"}