Git Product home page Git Product logo

community_garden_management_system's Introduction

Community Garden Management System

The Community Garden Management System is a web application designed to facilitate the management of community gardens. It allows users to reserve plots, track gardening activities, schedule maintenance tasks, and share resources. The platform includes features for user profiles, plot reservations, activity tracking, resource sharing, and community events.

Getting started

To get started developing in the browser, click this button:

Open in Gitpod

If you rather want to use GitHub Codespaces, click this button instead:

Open in GitHub Codespaces

NOTE: After dfx deploy, when developing in GitHub Codespaces, run ./canister_urls.py and click the links that are shown there.

If you prefer running VS Code locally and not in the browser, click "Codespaces: ..." or "Gitpod" in the bottom left corner and select "Open in VS Code" in the menu that appears. If prompted, proceed by installing the recommended plugins for VS Code.

To develop fully locally, first install Docker and VS Code and start them on your machine. Next, click the following button to open the dev container locally:

Open locally in Dev Containers

Prerequisities

  1. Install nvm:
  1. Switch to node v20:
  • nvm install 20
  • nvm use 20
  1. Install build dependencies:

For Ubuntu and WSL2

sudo apt-get install podman

For macOS:

xcode-select --install brew install podman

  1. Install dfx
  1. Add dfx to PATH:
  • echo 'export PATH="$PATH:$HOME/bin"' >> "$HOME/.bashrc"
  1. Create a project structure:
  • create src dir
  • create index.ts in the src dir
  • create tsconfig.json in the root directory with the next content

{ "compilerOptions": { "allowSyntheticDefaultImports": true, "strictPropertyInitialization": false, "strict": true, "target": "ES2020", "moduleResolution": "node", "allowJs": true, "outDir": "HACK_BECAUSE_OF_ALLOW_JS" } }

  • create dfx.json with the next content

{ "canisters": { "community_garden_management": { "type": "custom", "main": "src/index.ts", "candid": "src/index.did", "candid_gen": "http", "build": "npx azle community_garden_management", "wasm": ".azle/community_garden_management/community_garden_management.wasm", "gzip": true, "metadata": [ { "name": "candid:service", "path": "src/index.did" }, { "name": "cdk:name", "content": "azle" } ] } } }

where community_garden_management is the name of the canister.

  1. Create a package.json with the next content and run npm i:

{ "name": "community_garden_management", "version": "0.1.0", "description": "Internet Computer message board application", "dependencies": { "@dfinity/agent": "^0.21.4", "@dfinity/candid": "^0.21.4", "azle": "^0.21.1", "express": "^4.18.2", "uuid": "^9.0.1" }, "engines": { "node": "^20" }, "devDependencies": { "@types/express": "^4.17.21" } }

  1. Run a local replica
  • dfx start --host 127.0.0.1:8000

IMPORTANT NOTE

If you make any changes to the StableBTreeMap structure like change datatypes for keys or values, changing size of the key or value, you need to restart dfx with the --clean flag. StableBTreeMap is immutable and any changes to it's configuration after it's been initialized are not supported.

  • dfx start --host 127.0.0.1:8000 --clean
  1. Deploy a canister
  • dfx deploy Also, if you are building an HTTP-based canister and would like your canister to autoreload on file changes (DO NOT deploy to mainnet with autoreload enabled):

AZLE_AUTORELOAD=true dfx deploy

  1. Stop a local replica
  • dfx stop

Interaction with the canister

When a canister is deployed, dfx deploy produces a link to the Candid interface in the shell output.

Candid interface provides a simple UI where you can interact with functions in the canister.

On the other hand, you can interact with the canister using dfx via CLI:

get canister id:

  • dfx canister id <CANISTER_NAME> Example:
  • dfx canister id community_garden_management Response:

bkyz2-fmaaa-aaaaa-qaaaq-cai

Now, the URL of your canister should like this:

http://bkyz2-fmaaa-aaaaa-qaaaq-cai.localhost:8000

With this URL, you can interact with the canister using an HTTP client of your choice.

community_garden_management_system's People

Contributors

kamauhenry avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.