Sol-Estate is a decentralized Real World Asset (RWA) platform built on Solana using the Anchor Framework and Next.js. It allows users to invest in fractionalized real estate properties using USDC. The platform features an Admin Portal for listing properties, a Marketplace for viewing assets, and a User Dashboard for tracking portfolio performance.
- Sol-Estate Platform
- System Architecture
- Prerequisites
- Getting Started
- Configuration
- Wallet & Token Setup
- Visual Walkthrough & Usage
- Testing
- Troubleshooting
- Contributing
- Connect with Me
- License
Sol-Estate bridges the gap between traditional real estate and blockchain technology. By tokenizing properties on the Solana blockchain, we enable fractional ownership, increased liquidity, and transparent transaction history. This project demonstrates a full-stack Web3 application leveraging the high performance of Solana and the safety of the Anchor framework.
- Admin Portal: Secure interface for property owners/admins to list new real estate assets, specifying price, supply, and metadata.
- Marketplace: Public-facing gallery where users can browse listed properties and view details.
- Fractional Investment: Users can purchase fractional shares of properties using USDC.
- User Dashboard: Dedicated portfolio view for users to track their investments and asset performance.
- Custom SPL Token Integration: Fully functional implementation of SPL Token transactions (Fake USDC) with a dedicated faucet script.
The platform architecture follows a standard dApp pattern on Solana:
- Smart Contract (Program): Written in Rust using the Anchor Framework.
- Frontend: A Next.js 14 application using TypeScript and Tailwind CSS.
- Blockchain Interaction: The frontend communicates with the Solana cluster via
@solana/web3.jsand@coral-xyz/anchor.
We utilize Program Derived Addresses (PDAs) to securely manage state and relationships.
- Property Account (
Property): Stores details about a specific real estate listing (price, location, total tokens, etc.).- Seeds:
[b"property", owner_pubkey, property_id]
- Seeds:
- Vault Account (
Vault): An associated token account (PDA) owned by the program to hold the USDC collected from sales.- Seeds:
[b"vault", property_key]
- Seeds:
- User Investment Account (
UserInvestment): Tracks how many shares of a specific property a user owns.- Seeds:
[b"user-investment", property_key, user_pubkey]
- Seeds:
Note
Using PDAs ensures deterministic addresses that cannot be manipulated by users, enforcing strict access control and data integrity.
Ensure you have the following installed:
- Node.js: v20+ recommended (Download)
- Rust & Cargo: Latest stable version (Download)
- Solana CLI: v1.18+ (Guide)
- Anchor Framework: Latest version (Guide)
- Yarn: (
corepack enableornpm i -g yarn)
-
Clone the Repository
git clone https://github.com/raushan728/sol-estate-platform.git cd sol-estate-platform -
Install Backend Dependencies
yarn install
-
Install Frontend Dependencies
cd app && yarn install
-
Run Development Server
npm run dev # or yarn devThe application will be available at
http://localhost:3000.
Proper configuration is essential for the program to interact correctly with the frontend.
Run the following command to generate a new keypair if needed:
anchor keys syncIf not auto-updated, paste the new ID into programs/sol-estate/src/lib.rs:
declare_id!("YOUR_NEW_PROGRAM_ID");Ensure the [programs.devnet] section in Anchor.toml matches your new ID.
anchor buildanchor deploy- Copy the updated
target/idl/sol_estate.jsontoapp/src/app/idl/. - Update the
PROGRAM_IDinapp/src/app/utils/constants.tswith your new address.
This project requires a wallet funded with SOL (for gas) and our custom Fake USDC (for transactions).
solana-keygen new --outfile ~/.config/solana/id.json
solana config set --keypair ~/.config/solana/id.jsonSwitch to Devnet and request SOL:
solana config set --url devnet
solana airdrop 2We provided a script to mint Fake USDC tokens to your wallet.
- Edit Script: Open
app/scripts/mint-usdc.jsand replaceUSER_WALLET_ADDRESSwith your Public Key. - Run Script:
cd app node scripts/mint-usdc.js
Important
The script will output a New USDC Mint Address. Copy this address! You will need it to configure the "USDC Mint Address" when listing properties in the Admin Portal.
Phase 1: Admin Listing - The Admin Panel allows property owners to create new listings.

Phase 2: Successful Listing - Confirmation screen after successfully listing a real world asset.

Phase 3: Marketplace View - Users browse available properties on the main marketplace feed.

Phase 4: Investment Terminal - Clicking on a property reveals detailed information and the investment interface.

Phase 5: Transaction & Payment - Users confirm the transaction through their wallet provider.

Phase 6: Portfolio Dashboard - After investing, users can track their holdings.

Run the integration tests included in the repository:
anchor testThis validates the core mechanics including property initialization and investment logic.
Warning
Common Error: "Account not found" Ensure you have properly initialized the property before trying to invest in it. The Vault PDA must exist.
- Transaction Simulation Failed: Check if you have enough SOL for gas and enough Fake USDC.
- Wallet Connection Error: Verify you are on Solana Devnet.
Contributions are welcome!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
If you have any questions or want to collaborate, feel free to reach out!
- Email: raushankumarwork74@gmail.com
- LinkedIn: Raushan Kumar
- Telegram: @raushan_singh_29
Distributed under the MIT License. See LICENSE for more information.