CS Skin Analytics is a service designed to identify and capitalize on arbitrage opportunities within the Steam marketplace by comparing prices from various third-party vendors. The application enables users to track price differentials, purchase items from one vendor, and sell them to another, potentially generating profits. Future enhancements will include tracking historical data, building mathematical models to predict price trends, and providing users with informed profit-making predictions.
- Backend: Django
- Frontend: React
- Database: PostgreSQL
- Caching: Redis
- Task Queue: Celery and RabbitMQ
- Containerization: Docker
The project is fully dockerized. To set up the development environment, you need Docker and Docker Compose installed.
-
Clone the Repository:
git clone https://github.com/YourLocalDuck/CS-Skin-Analytics.git cd CS-Skin-Analytics git checkout dev -
Build and Start the Containers:
docker-compose up --build
-
Apply Migrations:
docker-compose exec web python manage.py migrate -
Create a Superuser (For debugging/administration):
docker-compose exec web python manage.py createsuperuser
With the containers up and running, the application will be accessible at http://localhost:8000. You can log in using the superuser credentials created during setup, however this port will be used for the API Gateway, rather than frontend.
As of 6/20/2024, the only implemented endpoint is POST /api/collection/init_update/. This endpoint expects a body of the names of all the markets that are to be updated, and will start a daemon that queries the API's of the relevant vendors and stores that data in the configured database.
Sample POST /api/collection/init_update/ body:
{
"markets":
[
{"name": "steam"},
{"name": "skinport"}
]
}To handle background tasks with Celery and RabbitMQ, ensure the Celery worker is running:
docker-compose exec web celery -A cs_skin_analytics worker --loglevel=info- User Actions: Users can input buy and sell orders, view price differentials, and interact with the marketplace through the React frontend.
- API Endpoints: Interact with the application using various API endpoints for managing transactions and user data.
- Price Differentials: The application displays current price differences between vendors.
- Transaction Results: Users receive feedback on their buy and sell orders.
- Future Predictions: (Planned) Users will receive predictions based on historical data analysis.
- Price Tracking: Track price differentials between multiple vendors.
- Buy/Sell Functionality: Execute buy and sell orders directly from the application.
- Full-Stack Integration: Django backend, React frontend, PostgreSQL database.
- Historical Data Analysis: Track and analyze historical price data.
- Predictive Modeling: Build and integrate mathematical models to predict price trends.
- User Notifications: Inform users of profitable opportunities based on predictions.
The database schema is designed to handle current needs and is expected to evolve with future requirements. Key tables include:
- Users: Stores user information and authentication details.
- Items: Details of items available in the marketplace.
- Vendors: Information about third-party vendors.
- Transactions: Records of buy and sell transactions.
Current API endpoints cover essential functionalities, with more endpoints planned for future needs. Some key planned endpoints include:
- /api/prices/: Get current price differentials.
- /api/buy/: Execute a buy order.
- /api/sell/: Execute a sell order.
- /api/users/: Manage user data.
- Complete Backend Endpoints: Develop remaining API endpoints.
- Frontend Development: Build the React frontend to provide a seamless user experience.
- Deploy to AWS: Deploy the fully dockerized application on AWS.
- Historical Data Tracking: Implement tracking and storage of historical price data.
- Predictive Modeling: Develop and integrate predictive models for price trend analysis.
This project is a work-in-progress and reflects ongoing efforts to build a comprehensive arbitrage platform for Steam marketplace items. Further contributions and developments are planned to enhance its capabilities and user experience. This project is currently being actively worked on by a single developer.