{"id":19481177,"url":"https://github.com/jmoussa/go-sentitweet","last_synced_at":"2026-05-04T17:36:21.509Z","repository":{"id":113273993,"uuid":"443001176","full_name":"jmoussa/go-sentitweet","owner":"jmoussa","description":"CLI Application holding a sentiment analysis data (Twitter tweets) pipeline with its own Web API to query results in the database. Written entirely in Go.","archived":false,"fork":false,"pushed_at":"2022-03-06T15:53:01.000Z","size":14024,"stargazers_count":1,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-25T17:36:51.646Z","etag":null,"topics":["api","channels","cli","cli-app","cobra","data-pipeline","data-pipelines","gin","gin-framework","gin-gonic","go","go-twitter","golang","gorilla-mux","mongodb","nlp","sentiment-analysis","twitter-api"],"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/jmoussa.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}},"created_at":"2021-12-30T07:31:35.000Z","updated_at":"2022-03-22T15:17:23.000Z","dependencies_parsed_at":"2023-03-12T19:30:23.407Z","dependency_job_id":null,"html_url":"https://github.com/jmoussa/go-sentitweet","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jmoussa/go-sentitweet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmoussa%2Fgo-sentitweet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmoussa%2Fgo-sentitweet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmoussa%2Fgo-sentitweet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmoussa%2Fgo-sentitweet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jmoussa","download_url":"https://codeload.github.com/jmoussa/go-sentitweet/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmoussa%2Fgo-sentitweet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32618202,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-04T10:08:07.713Z","status":"ssl_error","status_checked_at":"2026-05-04T10:08:02.005Z","response_time":58,"last_error":"SSL_read: 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":["api","channels","cli","cli-app","cobra","data-pipeline","data-pipelines","gin","gin-framework","gin-gonic","go","go-twitter","golang","gorilla-mux","mongodb","nlp","sentiment-analysis","twitter-api"],"created_at":"2024-11-10T20:01:36.958Z","updated_at":"2026-05-04T17:36:21.492Z","avatar_url":"https://github.com/jmoussa.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sentiment Analysis Platform\n\n\u003e A data-acquisition and enrichment pipeline for loading tweets into a MongoDB database with an API on top to query it.\n\u003e All wrapped in a neat CLI\n\n## Components\n\n**Analysis**: Functions available for use in the data pipelines to perform mutations on the data\n\n**API**: handle the API call/logic for fetching tweets and sentiment scores\n\n**CLI**: twitter (tw) CLI utility logic for interacting with tweets and sentiment scores  \n\n**Config**: config module based in JSON (enter twitter credentials for use)\n\n**Data Pipelines**: orchestrate/run tweet crawling and sentiment analysis\n\n**DB**: DB-specific connection and query logic\n\n**Monitoring**: monitoring and logging utilities (using AWS SNS for live-streaming insights through SQS Queue subscriptions)\n\n\n## Architecture\n\nThere are two main pieces of architecture\n\n- API\n- Sentiment Analysis Pipelines\n- Custom (`tw`) CLI utility\n    - Run the sentiment analysis pipeline and the API webserver to access sentiment analysis results \n    - *Coming Soon: List, Search, and interact with Twitter through the CLI*\n\n\n## What the Pipeline Does\n\nThe pipeline streams in tweets (based on a search phrase) and performs sentiment analysis on the tweets, before loading all relevant info into the database.\n\n**The Process**:\n\n- Fetch Tweets (based on search term)\n- Score Tweets (using the `vader-go` Default Lexicon) \n- Upload to DB (MongoDB)\n\nCredentials are configured using JSON config file.\n\n## Running Locally with the CLI:\n\n\n```bash\n# Project Setup (inside project directory)\ncp config/config.json.template config/config.json\n# fill in your config.json with your credentials\nexport CONFIG_LOCATION=$(pwd)/config.json\n\ncd bin/ # or add to your $PATH\n# Run the sentiment analysis pipeline with no tweet search phrases (default #nft)\n# runs in the foreground\n./tw pipeline \n./tw pipeline --term=\"#amazon\"\n\n# Run the RestAPI server (on port 8080)\n./tw server\n\n# (Coming Soon) Output CSV of tweets and sentiment scores\n# running the pipeline chunking 100 tweets at a time to csv\ntw pipeline --output=csv --chunk-size=100 --term=\"#amazon\" --output-path=./output/\n# query the API/database for tweets by time back\ntw query --days_back=5 --output=csv --output-path=./output/\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjmoussa%2Fgo-sentitweet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjmoussa%2Fgo-sentitweet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjmoussa%2Fgo-sentitweet/lists"}