{"id":23485748,"url":"https://github.com/tahmid-saj/fin-predict","last_synced_at":"2026-03-18T02:35:26.696Z","repository":{"id":182148048,"uuid":"612728900","full_name":"tahmid-saj/fin-predict","owner":"tahmid-saj","description":"Finance prediction app to view historical and current market data, weekly predictions on BTC / stocks / forex, and get support from AI driven services. Developed with Spring Boot, Maven, Thymeleaf, Django, AWS, GCP, Docker, MySQL.","archived":false,"fork":false,"pushed_at":"2024-10-18T02:27:37.000Z","size":389,"stargazers_count":9,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-28T13:21:18.734Z","etag":null,"topics":["aws","bitcoin","bootstrap","django","forecasting-models","gcp","java","maven","ml","mysql","spring-boot","thymeleaf"],"latest_commit_sha":null,"homepage":"https://financeprediction.io/","language":"Java","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/tahmid-saj.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":"2023-03-11T19:57:34.000Z","updated_at":"2025-01-25T05:48:02.000Z","dependencies_parsed_at":"2024-07-28T20:51:11.327Z","dependency_job_id":null,"html_url":"https://github.com/tahmid-saj/fin-predict","commit_stats":null,"previous_names":["tahmid-saj/fin-predict"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tahmid-saj%2Ffin-predict","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tahmid-saj%2Ffin-predict/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tahmid-saj%2Ffin-predict/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tahmid-saj%2Ffin-predict/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tahmid-saj","download_url":"https://codeload.github.com/tahmid-saj/fin-predict/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248988191,"owners_count":21194379,"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":["aws","bitcoin","bootstrap","django","forecasting-models","gcp","java","maven","ml","mysql","spring-boot","thymeleaf"],"created_at":"2024-12-24T22:13:57.828Z","updated_at":"2026-03-18T02:35:21.653Z","avatar_url":"https://github.com/tahmid-saj.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# [financeprediction.io](http://financeprediction.io/)\n\u003cbr\u003e\n\nFinance prediction app to view historical and current market data, weekly predictions on BTC / stocks / forex, and get support from AI driven services. Developed with Spring Boot, Maven, Thymeleaf, Django, AWS, GCP, Docker, MySQL.\n\u003cbr\u003e\n\u003cbr\u003e\n\nThe structure of the codebase is as follows:\n\n```\nmain/\n├── java/\n│   └── com/\n│       └── ts/\n│           └── finpredict/\n│               ├── assets/\n│               ├── FinPredict/\n│               │   ├── config/\n│               │   │   └── PredictorEntityConfig.java\n│               │   ├── controller/\n│               │   │   ├── about/\n│               │   │   ├── advice/\n│               │   │   │   └── AdviceWorker.java\n│               │   │   ├── chatbot/\n│               │   │   │   └── ChatbotWorker.java\n│               │   │   ├── FinPredictController.java\n│               │   │   ├── marketdata/\n│               │   │   │   └── MarketDataWorker.java\n│               │   │   ├── predictor/\n│               │   │   │   └── PredictorWorker.java\n│               │   │   └── requests/\n│               │   │       ├── AdviceRequests.java\n│               │   │       ├── ChatbotRequests.java\n│               │   │       ├── MarketDataRequests.java\n│               │   │       └── PredictorRequests.java\n│               │   ├── FinPredictApplication.java\n│               │   └── model/\n│               │       ├── dao/\n│               │       │   ├── PredictorDailyDAO.java\n│               │       │   ├── PredictorDailyDAOImpl.java\n│               │       │   ├── PredictorWeeklyDAO.java\n│               │       │   └── PredictorWeeklyDAOImpl.java\n│               │       ├── entity/\n│               │       │   ├── Advice.java\n│               │       │   ├── Chatbot.java\n│               │       │   ├── MarketData.java\n│               │       │   ├── Predictor.java\n│               │       │   ├── PredictorDailyEntity.java\n│               │       │   └── PredictorWeeklyEntity.java\n│               │       └── service/\n│               │           ├── PredictorDailyService.java\n│               │           ├── PredictorDailyServiceImpl.java\n│               │           ├── PredictorWeeklyService.java\n│               │           └── PredictorWeeklyServiceImpl.java\n│               └── util/\n│                   ├── errors/\n│                   │   └── shared/\n│                   │       ├── PageErrorResponse.java\n│                   │       ├── PageExceptionHandler.java\n│                   │       └── PageNotFoundException.java\n│                   ├── helpers/\n│                   └── sql/\n│                       ├── predictor-current-day-ddl.sql\n│                       └── predictor-current-week-ddl.sql\n└── resources/\n    ├── application.properties\n    ├── static/\n    │   ├── css/\n    │   │   ├── about.css\n    │   │   ├── advice.css\n    │   │   ├── market.css\n    │   │   └── predictor.css\n    │   ├── pages/\n    │   │   └── index.html\n    │   └── shared/\n    │       └── index.css\n    └── templates/\n        ├── about/\n        │   └── about.html\n        ├── advice/\n        │   └── advice.html\n        ├── marketdata/\n        │   └── marketdata.html\n        └── predictor/\n            └── predictor.html\n```\n\n\u003cfigure\u003e\n  \u003cimg width=\"946\" alt=\"image\" src=\"https://github.com/user-attachments/assets/24c51268-c37a-46fd-981d-f1df7a9fc866\"\u003e\n\u003c/figure\u003e\n\u003cbr\u003e\n\n[Figure 1: High level view](https://whimsical.com/fin-predict-9UPaQyGHkRt5NYyrn1LJh5)\n\u003cbr\u003e\n\u003cbr\u003e\n\n### The application consists of the following main components:\n\n1. __Client__: Springboot frontend web application which sends requests to the __Finance Predict API__. Currently the frontend is deployed using Docker on GCP App Engine.\n2. __Finance Predict API__: Finance prediction API developed using django and deployed to AWS EC2. API serves requests for finance prediction, market data queries and chatbot queries.\n3. __Services__: The following services are used:\n* OpenAI: Services chatbot requests\n* polygon.io: Provides market data for requests from the __Finance Predict API__\n5. __Machine learning__: ML models for BTC and stock predictions developed using TensorFlow / PyTorch. [ml-job-scheduler](https://github.com/tahmid-saj/ml-job-scheduler) handles the automated job runs from preprocessing, training, predictions, postprocessing, etc. The logs of the job runs are stored in S3 and the data is stored in MongoDB.\n6. __Databases__: ML prediction data is stored within MongoDB.\n7. __Data engineering__: Performs manual data migration using an external ETL / ELT API developed in Go, [etl-elt-api](https://github.com/tahmid-saj/etl-elt-api)\n8. __Security__: AWS security services (AWS Inspector and GuardDuty) which monitors the security of APIs. Later, data and logs from the services are queried and viewed using an external security tool.\n9. __Monitoring__: Monitoring service which collects data and logs from APIs using CloudWatch, then stores them in S3 to be viewed as a dashboard via an external monitoring tool. \n10. __Notifications__: Receives various data and logs in S3 buckets and later sends emails (on issues or failures) using SQS and Lambda.\n\n### Setting up the development environment:\n\n1. __Cloning the repository__: You would first need to clone this repository on the host you want to set up your development environment:\n```shell\ngit clone https://github.com/tahmid-saj/fin-predict.git\n``` \n2. __Installing dependencies__: The maven dependencies are provided in the __pom.xml__ file. They wil only need to be installed using a valid IDE such as IntelliJ IDEA or NetBeans.\n3. __API__: Client requests to go a the __Finance Predict API__ which provides the following:\n* Finance prediction\n* Historic market data\n* Chatbot responses\n4. __Services__: API keys are used from the following services in the __Finance Predict API__:\n* OpenAI: Services chatbot requests\n* polygon.io: Provides market data for requests from the __Finance Predict API__\n5. __Databases__: A MongoDB cluster and collections are created, and a connection is established with the __Finance Predict API__.\n6. __Data engineering__: The set up for the development environment for the data engineering tool can be found [here](https://github.com/tahmid-saj/etl-elt-api).\n7. __Machine learning__: The set up for the development environment for the ML job scheduler can be found [here](https://github.com/tahmid-saj/ml-job-scheduler).\n8. __AWS__: Setting up the AWS services is an optional step as this is on a development environment. However, the same services could be used to create the tools mentioned in the high level view.\n9. __Running the client__: The client can be run using an IDE or Docker using:\n* To package your application with Maven run:\n```shell\nmvn clean package\n```\n* Test the jar file:\n```shell\njava -jar target/\u003cSNAPSHOT NAME\u003e.jar\n```\n* Build the docker image:\n```shell\ndocker build -t \u003cPROJECT NAME\u003e .\n```\n* Tag the docker image:\n```shell\ndocker tag \u003cPROJECT NAME\u003e \u003cYOUR USERNAME\u003e/\u003cPROJECT NAME\u003e\n```\n* Push the docker image to Docker Hub:\n```shell\ndocker push \u003cYOUR USERNAME\u003e/\u003cPROJECT NAME\u003e:\u003cTAG NAME\u003e\n```\nAfter the image is pushed, it can be used in GCP App Engine or with a docker container in the development environment.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftahmid-saj%2Ffin-predict","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftahmid-saj%2Ffin-predict","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftahmid-saj%2Ffin-predict/lists"}