BarterPoint is a minimum viable product (MVP) for a bartering app, designed to facilitate the exchange of goods between users. This project aims to provide a simple and effective platform for users to list, browse, and trade items with ease.
- React Native: A mobile user interface that adapts well to various devices.
- .NET Web API: A backend service to handle user requests, authentication, and transactions.
- SQL Database: A data storage and retrieval system to manage user data and bartering activities.
For video demonstrations of these features, please refer to the Usage section.
BarterPoint can be set up either in the cloud or locally:
-
Cloud Setup: The current setup uses Azure for the SQL server and web API deployment. If you would like to check out the Swagger documentation and the database through Azure Studio, please reach out directly. Your IP address can be whitelisted, and demo user accounts with passwords can be created to provide access.
-
Local Setup: You can also run the project locally. Follow these steps:
-
Set up the SQL Server:
- Ensure an SQL server is running locally.
- Run the provided SQL scripts in the
BarterPoint.Sql
directory to set up the database schema.
-
Configure the Web API:
- Navigate to the
BarterPoint.Api
directory. - Set the connection string in the
appsettings.json
file to point to your local SQL server. - Start the web API using the command:
dotnet run
- Navigate to the
-
Configure the Mobile App:
- Navigate to
BarterPoint.Mobile/src/api/ApiService.ts
. - Adjust the
BASE_URL
in the configuration file to point to your local API URL.
- Navigate to
-
Run the Mobile App:
- Navigate back to the
BarterPoint.Mobile
directory. - Install dependencies using:
npm install
- Start the React Native Expo app using:
npm start
- Navigate back to the
-
Once the application is operational, users can:
- Register: Create an account to start bartering.
- List Items: Offer items for trade.
- Browse: Explore items listed by other users.
- Initiate Trades: Propose and manage trades with other users.
- Manage Activities: Oversee bartering activities and track transaction history.
For a deeper understanding of BarterPoint and its backend integration, explore our video tutorials:
-
Azure SQL Integration: Adding a Product, Placing a Bid, and Rejecting a Bid
Watch on YouTube: Azure SQL Integration -
User Features: Rating a User, Viewing Transaction History, Approving a Bid, and User Favorites
Watch on YouTube: Mobile App Features
While BarterPoint is a functional MVP, several features and improvements are planned for future releases:
- Microservices Architecture: Gradually refactor services into microservices for better scalability and maintainability.
- Push Notifications: Implement notifications to alert users about trade offers and updates.
- Caching: Introduce caching in the web API to enhance performance and efficiency.
- Comprehensive Logging: Implement logging on both the client side (mobile application) and the web API side for better monitoring and troubleshooting.
- Queuing Mechanisms: Explore the use of queuing for efficient handling of asynchronous tasks.
- Enhanced Security Measures: Implement advanced authentication and authorization mechanisms.
- Geolocation Services: Add location-based features to facilitate local trades.
BarterPoint is actively under development and primarily serves as a portfolio piece. The project is primarily used by the author as a tool to introduce some of his colleagues and friends to the .NET, React Native, and SQL ecosystem. The focus is to highlight how these technologies interact. There are no immediate plans to take this project beyond its current state.
Contributions to BarterPoint are welcome. Suggestions or issues can be submitted via pull requests or by opening an issue on GitHub.
This project is licensed under the Creative Commons Attribution 4.0 International (CC BY 4.0) License. This license allows you to:
- Use: The material can be used in any format or medium.
- Modify: The material can be remixed, transformed, and built upon.
- Distribute: The modified material can be distributed, even for commercial purposes.
-
Attribution:
Proper credit should be given, including a link to the license and an indication if changes were made. This ensures future contributors and users can benefit from the original work and its comprehensive context. -
Transparency:
All changes and contributions in the GitHub repository have time stamps and are publicly available, which promotes transparency and ease of verification. -
Collaboration:
Maintaining a link to the original work facilitates collaboration and allows users to leverage the entire body of work for their purposes.
-
Review Full-Stack Development Skills:
This project is ideal for demonstrating and reviewing full-stack development skills, and it is useful for job interviews and professional portfolios. -
Community Enhancement:
Others are welcome to learn from, contribute to, and expand upon this work. This doesn't have to be a solo project; it's a place to review skills, and contributions can be highlighted during job interviews.
For detailed information, please refer to the LICENSE file.