{"id":17629599,"url":"https://github.com/apneduniya/varta","last_synced_at":"2026-02-25T06:04:57.028Z","repository":{"id":259140376,"uuid":"876418029","full_name":"apneduniya/varta","owner":"apneduniya","description":"An innovative News Feed Analyzer Agent which provides comprehensive summaries of the latest news from many News Outlets based on User Interests, leveraging open-source LLMs, ScrapeGraph AI, Spheron and tools like LangChain ️‍🔥","archived":false,"fork":false,"pushed_at":"2024-11-06T19:11:20.000Z","size":707,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-14T03:37:56.656Z","etag":null,"topics":["bun","docker","expo","fastapi","jwt-authentication","langchain","llama3","mongodb","ollama","python","scrapegraphai","smtp","spheron","typescript"],"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/apneduniya.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}},"created_at":"2024-10-21T23:56:29.000Z","updated_at":"2025-02-09T10:22:57.000Z","dependencies_parsed_at":"2024-11-06T20:32:49.617Z","dependency_job_id":null,"html_url":"https://github.com/apneduniya/varta","commit_stats":{"total_commits":16,"total_committers":2,"mean_commits":8.0,"dds":0.5,"last_synced_commit":"388eaa6bafeef905bda8f3a0762a47dcd53ab10a"},"previous_names":["apneduniya/varta"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/apneduniya/varta","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apneduniya%2Fvarta","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apneduniya%2Fvarta/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apneduniya%2Fvarta/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apneduniya%2Fvarta/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apneduniya","download_url":"https://codeload.github.com/apneduniya/varta/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apneduniya%2Fvarta/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265538457,"owners_count":23784603,"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":["bun","docker","expo","fastapi","jwt-authentication","langchain","llama3","mongodb","ollama","python","scrapegraphai","smtp","spheron","typescript"],"created_at":"2024-10-23T00:05:10.793Z","updated_at":"2026-02-25T06:04:52.007Z","avatar_url":"https://github.com/apneduniya.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eVarta 🗞️\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003eAn innovative \u003cb\u003eNews Feed Analyzer Agent\u003c/b\u003e which provides comprehensive summaries of the \u003cb\u003elatest news from many News Outlets\u003c/b\u003e based on \u003cb\u003eUser Interests, leveraging open-source LLMs, ScrapeGraph AI, Spheron\u003c/b\u003e and tools like \u003cb\u003eLangChain\u003c/b\u003e ️‍🔥\u003c/p\u003e\n\n## 📋 Table of Contents\n- [Demo](#-demo)\n- [Features](#-features)\n- [Prerequisites](#-prerequisites)\n- [Steps to Run](#-steps-to-run)\n- [Deploy on Spheron](#-deploy-on-spheron)\n- [Project structure](#%EF%B8%8F-project-structure)\n- [Contributing](#-contributing)\n- [Acknowledgments](#-acknowledgments)\n- [License](#-license)\n\n## 🎥 DEMO\nThe **Server and Ollama Llama3** was deployed on **Spheron** when this demo video was shot.\n\n[![demo video](https://img.youtube.com/vi/OL2nFczDWso/0.jpg)](https://www.youtube.com/watch?v=OL2nFczDWso)\n\n## 📙 Features\nAn News Feed Analyzer Agent that can:\n\n- 🗞️ Aggregate news from 14+ sources.\n- 🔍 Analyze content from 60+ interests choosed by user.\n- 📝 Concise and comprehensive summaries of the latest news.\n- 📧 Email subscriptions with customizable frequency.\n- 🔖 Bookmark news for later read.\n\n## 🫳 Prerequisites\nYou should have\n\n- [Node v20.16.0 or higher](https://nodejs.org/en)\n- [Python 3.11 or higher](https://www.python.org/downloads/)\n- [MongoDB Atlas Connection URL](https://www.mongodb.com/docs/guides/atlas/connection-string/)\n- [Google App Password for SMTP](https://www.gmass.co/blog/gmail-smtp/)\n- [Ollama Llama3](https://ollama.com/library/llama3)\n\n## 👣 Steps to Run\n**Navigate to the Project Directory:**\nChange to the directory where the project files are located. For example:\n```shell\ncd path/to/project/directory\n```\n\n### 1. Expo App\n\n1. Install dependencies\n\n   ```bash\n   bun install # or npm install\n   ```\n\n2. Configure environment variables\n\n    1. Copy `.env.example` to `.env`.\n    2. Fill in the `.env` file with the necessary environment variables.\n\n2. Start the app\n\n   ```bash\n    bunx expo start # or npx expo start\n   ```\n\nIn the output, you'll find options to open the app in a\n\n- [Development build](https://docs.expo.dev/develop/development-builds/introduction/)\n- [Android emulator](https://docs.expo.dev/workflow/android-studio-emulator/)\n- [iOS simulator](https://docs.expo.dev/workflow/ios-simulator/)\n- [Expo Go](https://expo.dev/go), a limited sandbox for trying out app development with Expo\n\nThis project uses [file-based routing](https://docs.expo.dev/router/introduction).\n\n\u003cbr /\u003e\n\n### 2. Server\n\n1. Change the directory\n\n   ```bash\n   cd server\n   ```\n\n2. Create a virtual environment.\n\n   ```bash\n   python3 virtualenv venv\n   ```\n\n3. Activate the virtual environment.\n\n   ```bash\n   source ./venv/bin/activate\n   ```\n\n4. Install dependencies from `requirements.txt`\n\n   ```bash\n   pip install -r requirements.txt\n   ```\n\n5. Configure environment variables\n\n    1. Copy `.env.example` to `.env`.\n    2. Fill in the `.env` file with the necessary environment variables.\n\n6. Start the server\n\n   ```bash\n    fastapi dev main.py --reload --port 8000 # or for production, fastapi run main.py --port 8000\n   ```\n\n\u003e [!NOTE]\n\u003e Ollama should be running locally before you start the server!\n\n## 🚀 Deploy on Spheron\nHere I will help you to deploy **Server and Ollama** on Spheron using **Spheron Protocol CLI** 💪\n\n[![demo video](https://img.youtube.com/vi/j0LiRiz2iXg/0.jpg)](https://youtu.be/j0LiRiz2iXg)\n\n### Prerequisites\nYou should have this before you start deploying on Spheron:\n\n- [curl](https://curl.se/)\n\n### 1. Install Spheron Protocol CLI (Linux, MacOS)\n```bash\ncurl -sL1 https://sphnctl.sh | bash\n```\nAfter installation, verify the installation by using a simple command to check the Spheron version:\n```bash\nsphnctl version # or `sphnctl -h` for help\n```\n\n### 2. Creating a Wallet\n```bash\nsphnctl wallet create --name \u003cyour-wallet-name\u003e\n```\nReplace `\u003cyour-wallet-name\u003e` with your desired wallet name. Here is an example of how the result will look:\n```bash\nCreated account xxx:\n path: /home/thatsmeadarsh/.spheron/\u003cyour-wallet-name\u003e.json\n address: 0x3683Ae6bd8f23DEb35f79A750EA0a7e6fc858047\n secret: xxxxxxxxxx\n mnemonic: xxxxxx xxxxx xxxx xxxxx xxxxx xxxx xxxxx xxxxx\n```\nMake sure to _securely save the mnemonic phrase and key secret provided_.\n\n### 3. Get Test Tokens from the Faucet\nYou will need some token to deploy on Spheron. Visit the [Spheron Faucet](https://faucet.spheron.network/) to obtain test tokens for deployment. After receiving the tokens, you can check your wallet balance with:\n```bash\nsphnctl wallet balance --token USDT\n```\nHere is an example of how the result will look:\n```bash\nCurrent ETH balance: 0.09993387282 \nTotal USDT balance: 35 \n \nDeposited USDT balance\n unlocked: 14.030481 \n locked: 4e-06 \n```\nNote: You might have `unlocked or locked USDT balance` as 0 but here I don't because I have previously deployed on Spheron. Don't worry, in next step I have covered that 😋.\n\n### 4. Deposit Tokens to Your Escrow Balance\nDeposit USDT to your escrow wallet for deployment:\n```bash\nsphnctl payment deposit --amount 20 --token USDT\n```\nNow check your balance, if it's unlocked and sufficient (just like mine above):\n```bash\nsphnctl wallet balance --token USDT\n```\n\n### 5. Create your Deployment\nI have already created a docker image for you so you can directly head towards to deployment without worrying 😉. \nIn the project directory, navigate to `server/`:\n```bash\ncd server\n```\nOpen `deploy.yml` in a code editor and fill the environmental variables:\n```bash\n- MONGO_CONNECTION_URL=\n- DATABASE_NAME=\n- JWT_SECRET_KEY=\n- JWT_REFRESH_SECRET_KEY=\n- ACCESS_TOKEN_EXPIRE_MINUTES=\n- REFRESH_TOKEN_EXPIRE_MINUTES=\n- ALGORITHM=\n- SMTP_SERVER=\n- SMTP_PORT=\n- SMTP_USERNAME=\n- SMTP_PASSWORD=\n```\nAnd deploy the `deploy.yml` configuration file on Spheron:\n```bash\nsphnctl deployment create deploy.yml\n```\nHere is an example of how the result will look:\n```bash\nValidating SDL configuration.\nSDL validated.\nSending configuration for provider matching.\nCreate deployment tx: [Tx Hash]\nWaiting for providers to bid on the deployment order...\nBid found.\nOrder matched successfully.\nDeployment created using wallet 0x3683Ae6bd8f23DEb35f79A750EA0a7e6fc858047\n lid: 389\n provider: 0x6634d41cccBD1E1576Ed4c6226832521A66bF874\n agreed price: 0.74\nSending the manifest for deployment…\nDeployment manifest sent, waiting for acknowledgment.\nDeployment is finished.\n```\nNote: The `lid` we get from the deployment is called **Lease ID**. This is the identifier you need to use to access your deployment's logs and status.\n\nNow, Congratulations!! You have deployed the **Server and Ollama** on Spheron successfully 🥳🥳.\n\n### 6. Access Your Deployment\nTo get details about your deployment, including the URL, ports, and status, run:\n```bash\nsphnctl deployment get --lid \u003clease-id\u003e\n```\nReplace the `\u003clease-id\u003e` with your actual Lease ID, you obtained after deployment.\n\n## 🏛️ Project structure\n\n### 1. Expo App\n\n```bash\n├── app/                        # Main application\n│   ├── email-subscription/     # Email subscription screen\n│   ├── interest/               # News Interest screen\n│   ├── news-outlet/            # News Outlet screen\n│   ├── login/                  # Login screen\n│   ├── register/               # Register screen\n│   ├── news/                   # News screen (dynamic)\n│   ├── (tabs)/                 # Screens those are on Navigation Tab\n│       ├── index.tsx           # Home screen\n│       ├── bookmark/           # Bookmark screen\n│       └── settings/           # Settings screen\n├── assets/                     # Assets like fonts and images\n│   ├── fonts/                  # Font files\n│   └── images/                 # Image and Icon files\n├── components/                 # Reusable components\n│   ├── auth/                   # Authentication components\n│   ├── button/                 # Button components\n│   ├── common/                 # Common components\n│   ├── form/                   # Form-related components\n│   └── sections/               # Section components\n├── constants/                  # Constant values\n├── hooks/                      # Custom hooks\n├── server/                     # SERVER (BACKEND)\n├── service/                    # Services for API calls\n│   ├── auth/                   # Authentication services\n│   ├── email-subscription/     # Email subscription services\n│   └── news/                   # News services\n├── utils/                      # Utility functions\n├── .env.example                # Example environment variables\n└── .gitignore                  # Git ignore rules\n```\n\n### 2. Server\n\n```bash\n├── app/                        # Main application folder\n│   ├── auth/                   # Authentication module\n│   ├── news/                   # News module\n│   ├── subscription/           # Subscription module\n│   └── users/                  # User management module\n├── data/                       # Data and templates folder\n├── database/                   # Database management module\n├── helpers/                    # Helper functions\n├── models/                     # Models for data validation, serialization, and type enforcement \n├── service/                    # Service-related code\n│   ├── news/                   # News service\n│   └── subscription/           # Subscription service\n├── utils/                      # Utility functions\n├── main.py                     # Main application file\n├── deploy.yml                  # Spheron Deployment configuration\n├── Dockerfile                  # Docker configuration\n├── .dockerignore               # Docker ignore rules\n├── .env.example                # Example environment variables\n├── .gitignore                  # Git ignore rules\n└── requirements.txt            # Python dependencies\n```\n\n## 🤗 Contributing\n1. Fork the repository.\n2. Create a new branch: `git checkout -b feature-name`.\n3. Make your changes.\n4. Push your branch: `git push origin feature-name`.\n5. Create a pull request.\n\n## ✍ Acknowledgments\nThis project couldn't be there if they didn't be there!\n- [Spheron](https://spheron.network/)\n- [Ollama Llama3](https://ollama.com/library/llama3)\n- [ScrapeGraphAI](https://github.com/ScrapeGraphAI/Scrapegraph-ai)\n- [Langchain](https://www.langchain.com/)\n\nEven I had many issues while making this project and this was my first time to make a complete react native project with backend but spheron team helped me to over come the issues, gave me suggestions and I am really thankful to it ❤️‍🩹!\n\n## 🧾 License\nThis project is licensed under the [MIT License](LICENSE).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapneduniya%2Fvarta","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapneduniya%2Fvarta","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapneduniya%2Fvarta/lists"}