Inspiration
The inspiration for Partage Car-Sharing stems from my personal experience of owning a car that often sits idle in my hometown, while feeling the acute need for a vehicle when traveling abroad. This dichotomy sparked the idea of a decentralized car-sharing platform where vehicle owners could rent out their cars when not in use, and travelers could easily access a car without the overheads of ownership.
What it does
Partage Car-Sharing is a decentralized car-sharing application built on the NEAR blockchain. It allows users to:
- Register as either a car owner or a user.
- List their cars for rent if they are an owner, specifying details like availability and hourly rates.
- Rent available cars by making bookings directly through the smart contract, ensuring secure transactions.
The platform ensures that cars are available for rent when listed, and the booking system is designed to avoid conflicts, making car-sharing efficient and trustworthy.
How I built it
Backend:
- Language: Rust
- Framework: Built using the NEAR SDK with "cargo near new car-sharing" command.
- Deployment: Deployed on NEAR testnet. Available at https://testnet.nearblocks.io/txns/4e9S3aohQxwMhZZ4XefXDXyQVGUX7WcgJ1ykuc2GAhtN
*Frontend: *
- Framework: Next.js with React for the UI.
- Setup: Utilized "npx create-near-app@latest" for initializing the project.
- Interaction: The frontend interacts with the smart contract via NEAR's web3 modal for wallet connections and transactions.
*Integration: * The frontend fetches data and sends transactions to the smart contract using JavaScript, while the smart contract logic handles all the business rules in Rust. Demo at https://app.partage.xyz
Challenges we ran into
- Decentralized System Management: Managing a decentralized system where data integrity and user permissions are critical was challenging. Ensuring that only authorized users could interact with specific parts of the contract was a significant hurdle. I started with a specific framework for augmented data privacy but had to drop it on the go as I could get my mind around all the blind spots.
- Team Dynamics: Managing a team remotely, especially during the development sprints, required effective communication tools and strategies. Dealing with diverse time zones and personal commitments added complexity to the project timeline. I got in touch with a dozen or people for this project, though we'd be 5 working onto it, and finally had to do all myself. (sad, isn't it?)
Accomplishments that I'm proud of
- Functional Smart Contract: Successfully deploying a smart contract on NEAR that handles complex interactions like bookings, payments, and user management.
- User Experience: Creating a simple yet intuitive UI that simplifies the process of listing and renting cars.
- Security and Trust: Implementing a system where transactions are transparent, immutable, and secure, leveraging blockchain's inherent advantages.
What I learned
Technical:
- Rust for Contract Logic: Gained deep insights into using Rust for blockchain logic, appreciating its safety features and performance for smart contracts.
- JavaScript for Blockchain Interaction: Learned how to integrate blockchain data with a web application, managing state and transactions smoothly. Management:
- Team Management: The importance of clear communication, setting expectations, and managing dependencies within a team, especially in a tech-driven project.
- Dealing with Limitations: Understanding that recognizing and working around team members' limitations can lead to creative solutions and better team cohesion.
What's next for Partage Car-Sharing
- Community and Partnerships: I'm looking forward to attend IRL events in Bangkok, in particular for community growth around the project, potentially partnering with car manufacturers or rental companies for broader reach.
- Expand Functionality: There is more to add to this basic app, starting with car and user ratings, and insurance integration. Mainnet Deployment: Transition from testnet to mainnet for real-world transactions.


Log in or sign up for Devpost to join the conversation.