{"id":26070230,"url":"https://github.com/dmytro-varich/sentiment-analysis-web-app","last_synced_at":"2026-04-21T01:31:29.136Z","repository":{"id":280693939,"uuid":"941034248","full_name":"dmytro-varich/Sentiment-Analysis-Web-App","owner":"dmytro-varich","description":"This project focuses on Sentiment Analysis as part of an assignment for the Fundamentals of Cloud Technologies course. The objective is to develop a functional web application, analyze user input for sentiment (positive, neutral, or negative), and later containerize the application using Docker.","archived":false,"fork":false,"pushed_at":"2025-03-15T22:19:06.000Z","size":51,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-15T22:26:59.965Z","etag":null,"topics":["deployment","docker-compose","fastapi","html-css-javascript","nltk-python"],"latest_commit_sha":null,"homepage":"https://sentiment-analysis-web-app-production.up.railway.app/","language":"JavaScript","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/dmytro-varich.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-03-01T10:22:10.000Z","updated_at":"2025-03-15T22:19:09.000Z","dependencies_parsed_at":"2025-03-04T20:31:06.685Z","dependency_job_id":"2142a8a9-55bf-4ed1-bdb8-4dd65c2a2f7a","html_url":"https://github.com/dmytro-varich/Sentiment-Analysis-Web-App","commit_stats":null,"previous_names":["dmytro-varich/sentiment-analysis-web-app"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dmytro-varich/Sentiment-Analysis-Web-App","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmytro-varich%2FSentiment-Analysis-Web-App","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmytro-varich%2FSentiment-Analysis-Web-App/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmytro-varich%2FSentiment-Analysis-Web-App/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmytro-varich%2FSentiment-Analysis-Web-App/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dmytro-varich","download_url":"https://codeload.github.com/dmytro-varich/Sentiment-Analysis-Web-App/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmytro-varich%2FSentiment-Analysis-Web-App/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32072953,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T21:26:33.338Z","status":"ssl_error","status_checked_at":"2026-04-20T21:26:22.081Z","response_time":94,"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":["deployment","docker-compose","fastapi","html-css-javascript","nltk-python"],"created_at":"2025-03-08T23:07:39.935Z","updated_at":"2026-04-21T01:31:29.123Z","avatar_url":"https://github.com/dmytro-varich.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🙂 Sentiment Analysis Web App\r\nThis project is a **web application for sentiment analysis** of user input sentences. It is part of the **Fundamentals of Cloud Technologies course** assignment, where the task was to deploy a local web application in Docker, consisting of at least two services (containers). These services must run on separate ports, be deployed in different containers, and exchange data between them. The backend service performs sentiment analysis on user-submitted sentences, while the frontend provides a user interface to interact with the web application.\r\n\r\n![apple-touch-icon](https://github.com/user-attachments/assets/877067eb-ca4d-496f-b68a-3c84698a8217) \r\n\r\n# 🗂️ Project Structure\r\n\r\n```\r\nsentiment-analysis-web-app/\r\n│── backend/ \r\n│   ├── main.py            # Code for the web application (Backend)\r\n│   ├── requirements.txt   # Required dependencies \r\n│   ├── Dockerfile         # Docker image for the backend service\r\n│   ├── .dockerignore      # Specifies ignored files for the backend \r\n│── frontend/ \r\n│   ├── favicon/           # Favicon images for the frontend\r\n│   ├── index.html         # HTML file for the user interface\r\n│   ├── style.css          # CSS file for styling the frontend\r\n│   ├── script.js          # JavaScript to handle frontend logic\r\n│   ├── Dockerfile         # Docker image for Nginx (Frontend)\r\n│   ├── .dockerignore      # Specifies ignored files for the frontend\r\n│── docker-compose.yml     # Docker Compose file for orchestrating containers\r\n│── .env                   # File with environment variables\r\n│── start-app.sh           # Script to start the application\r\n│── end-app.sh             # Script to stop the application\r\n│── README.md              # Project documentation\r\n```\r\n\r\n# 🛠️ Tech Stack:\r\n- **Frontend:** `HTML`, `CSS`, `JavaScript`.\r\n- **Backend:** `Python`, `FastAPI`, `NLTK`, `Uvicorn`. \r\n- **Deployment:** `Docker`, `Docker Compose`.\r\n\r\n# 🎥 Demo Video\r\n\r\nhttps://github.com/user-attachments/assets/0012e651-1977-484d-99e3-fcdbaac4224b\r\n\r\n# 🐳 Docker Usage \r\n\r\n1. Navigate to the project's root directory using the command:  \r\n   ```sh\r\n   cd sentiment-analysis-web-app\r\n   ```\r\n\r\n2. To start the backend and frontend containers, run the startup script:  \r\n   ```sh\r\n   ./start-app.sh \r\n   ```\r\n\r\n3. Verify that both containers are running by executing:  \r\n   ```sh\r\n   docker container ls\r\n   ```\r\n   You should see two containers — one for the backend and one for the frontend:  \r\n   ```plaintext\r\n   CONTAINER ID   IMAGE                                 COMMAND                  CREATED              STATUS              PORTS                    NAMES\r\n   956badf9265f   sentiment-analysis-web-app-frontend   \"/docker-entrypoint.…\"   About a minute ago   Up About a minute   0.0.0.0:8080-\u003e80/tcp     sentiment-analysis-web-app-frontend-1\r\n   a7dc3ea44d15   sentiment-analysis-web-app-backend    \"uvicorn main:app --…\"   About a minute ago   Up About a minute   0.0.0.0:8000-\u003e8000/tcp   sentiment-analysis-web-app-backend-1\r\n   ```\r\n\r\n4. Access the application in a web browser:  \r\n   - **Frontend:** [http://localhost:8080](http://localhost:8080).  \r\n   - **Backend API:** [http://localhost:8000/analyze](http://localhost:8000/analyze).\r\n  \r\n   \u003e You can modify the `FRONTEND_URL` and `BACKEND_URL` environment variables in the `.env` file to change the addresses for the frontend and backend, respectively.\r\n\r\n5. To enter a running container, use:  \r\n   ```sh\r\n   docker exec -it \u003ccontainer-name\u003e /bin/sh\r\n   ```\r\n\r\n6. To stop and remove the containers, run:  \r\n   ```sh\r\n   ./end-app.sh\r\n   ```\r\n\r\n# 🌐 Deployment\r\nFor demonstration purposes, the web application has been deployed for free on the Railway server, without the need to run the project locally or use Docker Compose. You can access it at the following URL: [https://sentiment-analysis-web-app-production.up.railway.app/](https://sentiment-analysis-web-app-production.up.railway.app/). Please note that this deployment will be available for an indefinite period, subject to Railway's free-tier limits.\r\n\r\n# 🧑🏻 Author\r\nDmytro Varich is the creator of this application. You can learn more about his projects on his personal [Telegram channel](https://t.me/varich_channel), as well as connect with him via LinkedIn ([dmytro-varich](https://www.linkedin.com/in/dmytro-varich/)) and email (varich.it@gmail.com).\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmytro-varich%2Fsentiment-analysis-web-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdmytro-varich%2Fsentiment-analysis-web-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmytro-varich%2Fsentiment-analysis-web-app/lists"}