This starter full stack project has been generated using AlgoKit. See below for default getting started instructions.
- Clone this repository to your local machine.
- Ensure Docker is installed and operational. Then, install
AlgoKitfollowing this guide. - Run
algokit project bootstrap allin the project directory. This command sets up your environment by installing necessary dependencies, setting up a Python virtual environment, and preparing your.envfile. - In the case of a smart contract project, execute
algokit generate env-file -a target_network localnetfrom thecertchain-core-contractsdirectory to create a.env.localnetfile with default configuration forlocalnet. - To build your project, execute
algokit project run build. This compiles your project and prepares it for running. - For project-specific instructions, refer to the READMEs of the child projects:
- Smart Contracts: certchain-core-contracts
- Frontend Application: certchain-core-frontend
This project is structured as a monorepo, refer to the documentation to learn more about custom command orchestration via
algokit project run.
- If you update to the latest source code and there are new dependencies, you will need to run
algokit project bootstrap allagain. - Follow step 3 above.
This project makes use of Python and React to build Algorand smart contracts and to provide a base project configuration to develop frontends for your Algorand dApps and interactions with smart contracts. The following tools are in use:
- Algorand, AlgoKit, and AlgoKit Utils
- Python dependencies including Poetry, Black, Ruff or Flake8, mypy, pytest, and pip-audit
- React and related dependencies including AlgoKit Utils, Tailwind CSS, daisyUI, use-wallet, npm, jest, playwright, Prettier, ESLint, and Github Actions workflows for build validation
It has also been configured to have a productive dev experience out of the box in VS Code, see the backend .vscode and frontend .vscode folders for more details.
Refer to the certchain-core-contracts folder for overview of working with smart contracts, projects/certchain-core-frontend for overview of the React project and the projects/certchain-core-frontend/contracts folder for README on adding new smart contracts from backend as application clients on your frontend. The templates provided in these folders will help you get started.
When you compile and generate smart contract artifacts, your frontend component will automatically generate typescript application clients from smart contract artifacts and move them to frontend/src/contracts folder, see generate:app-clients in package.json. Afterwards, you are free to import and use them in your frontend application.
The frontend starter also provides an example of interactions with your CertchainClient in AppCalls.tsx component by default.
Shortest sequence to prove everything works (including IPFS):
# 1. Setup environment (once)
cd CertChain/projects/certchain-core-contracts
algokit localnet start
algokit project deploy localnet
# 2. Run complete hackathon validation test
python test_final_hackathon.py
# 3. Verify IPFS files are accessible
curl -I https://ipfs.io/ipfs/QmaQUQRH3RBWHbTvV1zLnge1ciVaUDsTqBmQaRdAhW91j2What this proves:
- ✅ 100% On-Chain Logic: Smart contract controls all operations
- ✅ No Cheating: Pure Python smart contract (no inline TEAL)
- ✅ Real IPFS: Files uploaded and accessible via IPFS gateway
- ✅ Complete Functionality: Certificate issuance, recovery, and validation
- ✅ Algorand Compliance: Real transactions with TxIDs on LocalNet
Expected Output:
- Smart contract deployment with Application ID
- Certificate issued with Asset ID + IPFS metadata URLs
- Recovery password stored on-chain (Transaction ID)
- Certificate recovery with identical metadata (new Asset ID)
- IPFS accessibility confirmation (HTTP 200)
Core Innovation: On-demand certificate tokenization through smart contracts that create new ASAs with identical metadata for lost wallet recovery.
You can take this project and customize it to build your own decentralized applications on Algorand. Make sure to understand how to use AlgoKit and how to write smart contracts for Algorand before you start.