GithubHelp home page GithubHelp logo

undp / carbon-registry Goto Github PK

View Code? Open in Web Editor NEW
36.0 8.0 32.0 427.65 MB

National Carbon Credit Registry Digital Public Good (DPG) by Digital For Climate (D4C) collaboration. Code coordinated by ExO/CDO & BPPS/Climate.

License: GNU Affero General Public License v3.0

JavaScript 0.20% HTML 42.05% SCSS 8.69% TypeScript 48.55% Dockerfile 0.22% Shell 0.29%
carbon-emissions climate sustainable-development-goals digital-public-goods

carbon-registry's Introduction

GitHub last commit Uptime GitHub Workflow Status (with branch) GitHub Workflow Status (with branch)

National Carbon Credit Registry

The National Carbon Registry enables carbon credit trading in order to reduce greenhouse gas emissions.

As an online database, the National Carbon Registry uses national and international standards for quantifying and verifying greenhouse gas emissions reductions by projects, tracking issued carbon credits and enabling credit transfers in an efficient and transparent manner. The Registry functions by receiving, processing, recording and storing data on mitigations projects, the issuance, holding, transfer, acquisition, cancellation, and retirement of emission reduction credits. This information is publicly accessible to increase public confidence in the emissions reduction agenda.

The National Carbon Registry enables carbon credit tracking transactions from mitigation activities, as the digital implementation of the Paris Agreement. Any country can customize and deploy a local version of the registry then connect it to other national & international registries, MRV systems, and more.

The system has 3 key features:

  • Analytics Dashboard: Enabling governments, companies, and certification bodies to operate transparently and function on an immutable blockchain.
  • Carbon Credit Calculator: Standardized system According to the UNFCCC - CDM (Clean Development Mechanism) methodologies, across defined sectors.
  • Serial Number Generator: Standardizing the technical format to allow for easy cross-border collaboration between carbon trading systems.

Index

Standards

This codebase aims to fullfill the digital public goods standard: https://digitalpublicgoods.net/standard/ It is built according to the Principles for Digital Development: https://digitalprinciples.org/

Changelog

Learn about the latest improvements.

System Architecture

UNDP Carbon Registry is based on service oriented architecture (SOA). Following diagram visualize the basic components in the system.

alt text

System Services

National Service

Authenticate, Validate and Accept user (Government, Project Developer/Certifier) API requests related to the following functionalities,

  • User and company CRUD operations.
  • User authentication.
  • Project life cycle management.
  • Credit life cycle management.

Service is horizontally scalable and state maintained in the following locations,

  • File storage.
  • Operational Database.
  • Ledger Database.

Uses the Carbon Credit Calculator and Serial Number Generator node modules to estimate the project carbon credit amount and issue a serial number. Uses Ledger interface to persist project and credit life cycles.

Analytics Service

Serve all the system analytics. Generate all the statistics using the operational database. Horizontally scalable.

Replicator Service

Asynchronously replicate ledger database events in to the operational database. During the replication process it injects additional information to the data for query purposes (Eg: Location information). Currently implemented for QLDB and PostgresSQL ledgers. By implementing replicator interface can support more ledger replicators. Replicator select based on the LEDGER_TYPE environment variable. Support types QLDB, PGSQL(Default).

Deployment

System services can deploy in 2 ways.

External Service Providers

All the external services access through a generic interface. It will decouple the system implementation from the external services and enable extendability to multiple services.

Geo Location Service

Currently implemented for 2 options.

  1. File based approach. User has to manually add the regions with the geo coordinates. Sample File. To apply new file changes, replicator service needs to restart.
  2. Mapbox. Dynamically query geo coordinates from the Mapbox API.

Can add more options by implementing location interface

Change by environment variable LOCATION_SERVICE. Supported types MAPBOX, FILE(Default)

File Service

Implemented 2 options for static file hosting.

  1. NestJS static file hosting using the local storage and container volumes.
  2. AWS S3 file storage.

Can add more options by implementing file handler interface

Change by environment variable FILE_SERVICE. Supported types S3, LOCAL(Default)

Database Architecture

Primary/secondary database architecture used to store carbon project and account balances. Ledger database is the primary database. Add/update projects and update account balances in a single transaction. Currently implemented only for AWS QLDB

Operational Database is the secondary database. Eventually replicated to this from primary database via data stream. Implemented based on PostgresSQL

Why Two Database Approach?

  1. Cost and Query capabilities - Ledger database (blockchain) read capabilities can be limited and costly. To support rich statistics and minimize the cost, data is replicated in to a cheap query database.
  2. Disaster recovery
  3. Scalability - Primary/secondary database architecture is scalable since additional secondary databases can be added as needed to handle more read operations.

Why Ledger Database?

  1. Immutable and Transparent - Track and maintain a sequenced history of every carbon project and credit change.
  2. Data Integrity (Cryptographic verification by third party).
  3. Reconcile carbon credits and company account balance.

Ledger Database Interface

This enables the capability to add any blockchain or ledger database support to the carbon registry without functionality module changes. Currently implemented for PostgresSQL and AWS QLDB.

PostgresSQL Ledger Implementation storage all the carbon project and credit events in a separate event database with the sequence number. Support all the ledger functionalities except immutability.

Single database approach used for user and company management.

Ledger Layout

Carbon Registry contains 3 ledger tables.

  1. Project ledger - Contains all the project and credit transactions.
  2. Company Account Ledger (Credit) - Contains company accounts credit transactions.
  3. Country Account Ledger (Credit) - Contains country credit transactions.

The below diagram demonstrates the the ledger behavior of project create, authorise, issue and transfer processes. Blue color document icon denotes a single data block in a ledger.

alt text

Authentication

  • JWT Authentication - All endpoints based on role permissions.
  • API Key Authentication - MRV System connectivity.

Project Structure

.
├── .github                         # CI/CD [Github Actions files]
├── deployment                      # Declarative configuration files for initial resource creation and setup [AWS Cloudformation]
├── backend                         # System service implementation
    ├── services                    # Services implementation [NestJS application]
        ├── src
            ├── national-api        # National API [NestJS module]      
            ├── stats-api           # Statistics API [NestJS module]
            ├── ledger-replicator   # Blockchain Database data replicator [QLDB to Postgres]
            ├── shared              # Shared resources [NestJS module]     
        ├── serverless.yml          # Service deployment scripts [Serverless + AWS Lambda]
├── libs
    ├── carbon-credit-calculator    # Implementation for the Carbon credit calculation library [Node module + Typescript]
    ├── serial-number-gen           # Implementation for the carbon project serial number calculation [Node module + Typescript]
├── web                             # System web frontend implementation [ReactJS]
├── .gitignore
├── docker-compose.yml              # Docker container definitions
└── README.md

Run Services As Containers

  • Update docker compose file env variables as required.
    • Currently all the emails are disabled using env variable IS_EMAIL_DISABLED. When the emails are disabled email payload will be printed on the console. User account passwords needs to extract from this console log. Including root user account, search for a log line starting with Password (temporary) on national container (docker logs -f undp-carbon-registry-national-1).
    • Add / update following environment variables to enable email functionality.
      • IS_EMAIL_DISABLED=false
      • SOURCE_EMAIL (Sender email address)
      • SMTP_ENDPOINT
      • SMTP_USERNAME
      • SMTP_PASSWORD
    • Use DB_PASSWORD env variable to change PostgresSQL database password
    • Configure system root account email by updating environment variable ROOT EMAIL. If the email service is enabled, on the first docker start, this email address will receive a new email with the root user password.
    • By default frontend does not show map images on dashboard and project view. To enable them please update REACT_APP_MAP_TYPE env variable to Mapbox and add new env variable REACT_APP_MAPBOXGL_ACCESS_TOKEN with MapBox public access token in web container.
  • Add user data
    • Update organisations.csv file to add organisations.
    • Update users.csv file to add users.
    • When updating files keep the header and replace existing dummy data with your data.
    • These users and companys add to the system each docker restart.
  • Run docker-compose up -d --build. This will build and start containers for following services,
    • PostgresDB container
    • National service
    • Analytics service
    • Replicator service
    • React web server with Nginx.
  • Web frontend on http://localhost:3030/
  • API Endpoints,

Run Services Locally

  • Setup postgreSQL locally and create a new database.
  • Update following DB configurations in the .env.local file (If the file does not exist please create a new .env.local)
    • DB_HOST (Default localhost)
    • DB_PORT (Default 5432)
    • DB_USER (Default root)
    • DB_PASSWORD
    • DB_NAME (Default carbondbdev)
  • Move to folder cd backend/service
  • Run yarn run sls:install
  • Initial user data setup serverless invoke local --stage=local --function setup --data '{"rootEmail": "<Root user email>","systemCountryCode": "<System country Alpha 2 code>", "name": "<System country name>", "logoBase64": "<System country logo base64>"}'
  • Start all the services by executing sls offline --stage=local
  • Now all the system services are up and running. Swagger documentation will be available on http://localhost:3000/local/national

Deploy System on the AWS Cloud

  • Execute to create all the required resources on the AWS.
    aws cloudformation deploy --template-file ./deployment/aws-formation.yml --stack-name carbon-registry-basic --parameter-overrides EnvironmentName=<stage> DBPassword=<password> --capabilities CAPABILITY_NAMED_IAM
    
  • Setup following Github Secrets to enable CI/CD
    • AWS_ACCESS_KEY_ID
    • AWS_SECRET_ACCESS_KEY
  • Run it manually to deploy all the lambda services immediately. It will create 2 lambda layers and following lambda functions,
    • national-api: Handle all carbon registry user and program creation. Trigger by external http request.
    • replicator: Replicate Ledger database entries in to Postgres database for analytics. Trigger by new record on the Kinesis stream.
    • setup: Function to add initial system user data.
  • Create initial user data in the system by invoking setup lambda function by executing
    aws lambda invoke \
        --function-name carbon-registry-services-dev-setup --cli-binary-format raw-in-base64-out\
        --payload '{"rootEmail": "<Root user email>","systemCountryCode": "<System country Alpha 2 code>", "name": "<System country name>", "logoBase64": "<System country logo base64>"}' \
        response.json
    

Carbon Credit Calculator

Carbon credit calculation implemented in a separate node module. Please refer this for more information.

Serial Number Generation

Serial Number generation implemented in a separate node module. Please refer this for more information.

External Connectivity

ITMO Platform

  1. Carbon Registry make a daily to the retrieve ITMO platform projects.
  2. Projects create in the Carbon Registry when projects are authorized in the ITMO Platform
  3. The Carbon Registry update when the projects are Issued with credits in the ITMO Platform

Lifecycle

alt text

Project Creation and Authorisation

  • Authorisation of projects in the ITMO Platform identified by the event name: "ITMO-Design Document (DD) & Validation Report / Upload on National Public Registry".
  • If the Company Tax Id doesn’t exist in the Carbon Registry, that company created in the Carbon Registry.
  • When creating the project:
    • The project created with the state “Pending”
    • The credit estimate set to 100 by default
    • The company percentage set to 100%
    • The serial number for the project generated the same as any other project in the Carbon Registry.
  • Projects retrieved from the ITMO Platform and created in the Carbon Registry can Authorised/Rejected by a Government user the same as any other project in the Carbon Registry
  • When a project is authorised, the authorised credits will be the default credit estimate mentioned above. The project can be issued with credits by a Government user the same as any other project in the Carbon Registry.

Credit Issuance

  • Credits can be issued for projects retrieved from the ITMO Platform and created in the Carbon Registry in two ways;
    • By a Government user the same as any other project.
    • Credit issuance in the ITMO Platform which should be reflected in the Carbon Registry.
  • In the case of 2 above,
    • Credit issuance identified by the event name: "Upload Final Monitoring Report" in the ITMO Platform.

Field Mapping

Company

Name in the Carbon Registry Mandatory in the Carbon Registry Name in the ITMO Platform
Tax ID (taxId) Yes company
Name (name) Yes company
Email (email) Yes Set default : nce.digital+[organisation]@undp.org
Phone Number (phoneNo) Yes Set default : 00
Website
Address Set default : Country if the Registry
Logo
Country (country) Set default : Country of the Registry
Role (companyRole) Yes Set default : ProgrammeDeveloper


User

Name in the Carbon Registry Mandatory in the Carbon Registry Name in the ITMO Platform
Email (email) Yes Set default : nce.digital+[organisation]@undp.org
Role (role) Yes Set default : Admin
Phone Number (phoneNo) Set default : 00


Project

Name in the Carbon Registry Mandatory in the Carbon Registry Name in the ITMO Platform
Project Name (title) Yes Name
External ID (externalId) Yes id
Credit Issuance Serial Number
Current Status Set default : Pending
Applicant Type Set default : Project Developer
Sector (sector) Yes Sector
Sectoral Scope (sectoralScope) Yes Sector
Project Start Date (startTime) Yes createdAt
Project End Date (endTime) Yes createdAt + 10 years
Geographical Location (Regional) (geographicalLocation) Yes country (Name not mentioned as ISO3 or actual name)
Buyer Country Eligibility
Project Cost (USD) (programmeCostUSD) Yes Set default : Null
Financing Type
Grant Equivalent Amount
Carbon Price (Dollars per ton)
Company company
Company Tax ID (proponentTaxVatId) Yes company
Company Percentage (proponentPercentage) Yes Set default : 100%
Type of Mitigation Action/Activity (typeOfMitigation) Yes Sector
GHGs Covered (greenHouseGasses) Yes Set default : CO2
Credits Authorised Set default : 100
Credits Issued Set default : 10
Credits Transferred
Credits Frozen
Credits Retired
Credits authorised for international transfer and use (Total cumulative maximum amount of Mitigation Outcomes for which international transfer and use is authorized)
Crediting Period (years)
Project Materials Files *
Project Materials Files *
Credit Calculation Fields / Mitigation Type Calculation
Agriculture
Land Area
Land Area Unit
Solar
energy generation
energy generation unit
consumer group

ITMO Sector Mapping

ITMO Sector Field Value Sector Sectoral Scope Type Of Mitigation
energy-distribution Energy Energy Distribution Energy Distribution
agriculture Agriculture Agriculture Agriculture
energy-industries Energy Energy Industry EE Industry
Default Other Energy Industry EE Industry

Assumptions

  • Project estimated credit amount is 100.
  • Project issued credit amount is always 10.

Docker Integration Setup

  1. Append data-importer to docker-compose file replicator service RUN_MODULE env variable with comma separated.
  2. Update following env variables in the docker-compose file replicator service.
    • ITMO_API_KEY
    • ITMO_EMAIL
    • ITMO_PASSWORD
    • ITMO_ENDPOINT
  3. Projects will import on each docker restart.

User Onboarding and Permissions Model

User Roles

System pre-defined user roles are as follows,

  • Root
  • Company Level (National Government, Project and Certification Company come under this level)
    • Admin
    • Manager
    • View Only

User Onboarding Process

  1. After the system setup, the system have a Root User for the setup email (one Root User for the system)
  2. Root User is responsible for creating the Government entity and the Admin of the Government
  3. The Government Admin is responsible for creating the other companies and Admins of each company.
  4. Admin of the company has the authority to add the remaining users (Admin, Managers, View Only Users) to the company.
  5. When a user is added to the system, a confirmation email should be sent to users including the login password.

User Management

All the CRUD operations can be performed as per the following table,

Company Role New User Role Authorized User Roles (Company)
Government Root Cannot create new one other than the default system user and Can manage all the users in the system
Government Admin
Manager
View Only
Root
Admin(Government)
All other Company Roles Admin
Manager
View Only
Root
Admin(Government)
Admin(Company)
  • All users can edit own user account except Role and Email.
  • Users are not allowed to delete the own account from the system.

Web Frontend

Web frontend implemented using ReactJS framework. Please refer getting started with react app for more information.

Localization

  • Languages (Current): English
  • Languages (In Progress): French. Spanish Please refer here for adding a new language translation file.

Application Programming Interface (API)

For integration, reference RESTful Web API Documentation documentation via Swagger. To access

  • National API: api.APP_URL/national
  • Status API: api.APP_URL/stats

Resource Requirements

Resource Minimum Recommended
Memory 4 GB 8 GB
CPU 4 Cores 4 Cores
Storage 20 GB 50 GB
OS Linux
Windows Server 2016 and later versions.

Note: Above resource requirement mentioned for a single instance from each microservice.

Status Page

For transparent uptime monitoring go to status.APP_URL Open source code available at https://github.com/undp/carbon-registry-status

Governance and Support

The United Nations Development Program (UNDP) is responsible for managing the application. To ensure alignment with international demand, Digital For Climate (D4C) will act as an advisory body to the Digital Public Good Carbon Registry codebase. D4C is a collaboration between European Bank for Reconstruction and Development (EBRD), United Nations Development Program (UNDP), United Nations Framework Convention on Climate Change (UNFCCC), International Emissions Trading Association (IETA), European Space Agency (ESA), and World Bank Group  that aims to coordinate respective workflows and create a modular and interoperable end-to-end digital ecosystem for the carbon market. The overarching goal is to support a transparent, high integrity global carbon market that can channel capital for impactful climate action and low-carbon development.

This code is managed by United Nations Development Programme as custodian, detailed in the press release. For technical questions, please visit the community of practice ‘Keeping Track of the Paris Agreement’ or submit through the open forum. For any other questions, contact us at [email protected].

carbon-registry's People

Contributors

aaketk17 avatar athavanxept avatar dependabot[bot] avatar dhanushkaxep avatar dhanuxeptagon avatar fossabot avatar gayanath8 avatar kaarinadev avatar kdshanikaw avatar leshanw avatar lochanaoshadha avatar mbelinsky avatar palindaa avatar pruthuvixeptagon avatar ravinduf09 avatar reinaotsuka avatar sapumalxep avatar tharindugayanga avatar timschloe avatar uvinduxeptagon avatar yathurshant avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

carbon-registry's Issues

Pending Approval Wait Times

Pending Approvals section in sidebar. Show list of what needs to be approved and how long the request has been waiting times. Needs design.

Updated D4C Support Images

Adjust UNDP logo to only image. Add logos for other D4C partners:
D4C is a collaboration between the European Bank for Reconstruction and Development (EBRD), United Nations Development Program (UNDP), United Nations Framework Convention on Climate Change (UNFCCC), International Emissions Trading Association (IETA), European Space Agency (ESA), and World Bank Group

Unified Platform

Sidebar with 3 options as toggle for Registry, MRV and GHG Inventory.

Toggle sidebar example as Focused/Other toggle.
Screenshot 2023-07-13 at 11 53 43 AM

SDG Indicators

Transparency: Co-Benefits: When specific SDG co-benefit selected, add option for indicators.

Interactive Onboarding

Onboarding This feature will provide users with a better onboarding experience by offering a product walkthrough tool that walks users through the product. This will help users understand how to use the system more quickly and effectively.

Using tools like https://shepherdjs.dev/ or https://introjs.com/

Service delivery analytics

This feature will provide users with analytics to help them improve service delivery. It will outline the speed of approvals, authorizations, rejections, and other actions in the system. Users can then use this information to identify bottlenecks and optimize their workflows

Message Inbox

Real-time updates will enable users to receive notifications via email, browser, or WhatsApp when there is any activity in the system. This will provide users with real-time information and updates about the status of their transactions.

Data export

Data export will enable users to export data from the system in raw and report formats. This will allow users to use the data for further analysis or to generate reports for internal or external use.

NDC action after approval

Add a condition to add NDC action. Grey out "Add Action" button until methodology document is approved/programme is approved

User Creation / Password Reset

Now inside a local install of the registry. Am I correct in the assumption that I cannot create user passwords manually in the GUI, but only auto-generate by email resp. would need to go into the PostGres directly if I wanted to edit passwords manually?

We want to do an interactive Demo of the registry next week, and I need to be able to play around with the system with multiple users to figure out what kinds of tasks we can give them.

@palindaa Would it be possible to give me an admin account on a robust, online install where I can prepare an experience for multiple users that can actually send emails and set passwords? Would also be critical to add some programmes.

Sorry, was planning to do this with @mbelinsky but afraid currently you are the only hope to get there in time...

P.S.
This seems unusually complex compared to other open source admin panels - e.g. Mastodon, Peertube, Nextcloud and Funkwhale all allow admin to manually reset passwords in the GUI?

Login Credentials not working

So I finally managed to find the Password in the log file, but unfortunately...:
image
note that I have changed the country name in the docker-compose in at least 7 different positions, and the email is still using the wrong country name. Suggesting to make that a global variable of sorts.

but, unfortunately, on the login I get:

image

Issued vs Balance Discrepancy

For instance:
FEED SL (Farmer Development) - Phase 1.4
issued = 10, balance = 7 on dashboard.
issued = 7, authorized = 10 on programme page. total = 20.

Programme Complaint Form

On each programme page, add "File a complaint" https://thenounproject.com/icon/annoucement-1145837/

Link to form with the following information:

CARBON REGISTRY COMPLAINT FORM

Send us your environmental and/or social complaint using this Complaint Form.

DOES YOUR GRIEVANCE INVOLVE ONE OR MORE OF THE FOLLOWING? (PLEASE SELECT ALL THAT APPLY):

  • Alleged incidents of sexual and gender-based violence, including exploitation, abuse, and harassment
  • Alleged incidents of child or forced labor
  • Accidents or incidents leading to deaths, severe injuries, or life-threatening situations
  • Alleged incidents of unplanned or accidental significant impacts on natural resources in critical ecosystems, such as protected areas or key biodiversity areas (KBAs)
  • Fear of retaliation or threats to health and life of project affected parties, civil society advocates or complainants
  • Gender bias
  • Human rights abuses

WHAT HAPPENED:

WHAT WOULD BE A FAIR RESOLUTION?:

PERSONAL INFORMATION

Name

Email

Phone

Affiliation (Academia, Civil Society, Goverment, Indigenous / Afro-Descendent Group, Individual, Media, Multilateral Organization, Private Sector)

Country of Residence

If required to resolve the complaint, do you consent to disclose relevant identifying or personal information with relevant third parties, including the executing agency and other relevant

  • Yes
  • No

Button: Turnstile (CAPTCHA alternative) https://developers.cloudflare.com/turnstile/
Button: Submit

Note: Inspired by https://www.iadb.org/en/projects/grievances-portal

Add Analytics

<script> (function(h,o,t,j,a,r){ h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)}; h._hjSettings={hjid:3270907,hjsv:6}; a=o.getElementsByTagName('head')[0]; r=o.createElement('script');r.async=1; r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv; a.appendChild(r); })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv='); </script>

Overall mitigation in global emissions (OMGE) Account

OMGE is a universal account for cancellation. Per methodology. Per country.

eg in OMGE: Ghana sends 100 ITMOs to Switzerland but Switzerland only adds 99 ITMOs to their account. One ton is thrown into a bucket called OMGE. The % of what is accepted is defined per country per methodology type.

OMGE: the percentage of emission reduction credits to be cancelled in order to deliver an overall mitigation in global emissions (OMGE) under Article 6.4(d), and the application of OMGE to transfers under Article 6.2;

Cleaning Up & Resetting

It works! I just send some ITMOs. Great.

Still, there are a lot of programs in the database and users... Can we have a clean install (that can sent emails)?

In order to make this interactive and playable, we will need to add approximately 60 users with passwords & give half of them control over programms with issued credits that they can then transfer to the other half, who can then sent them to a retirement account...

I think I would have to edit the database directly to do that atm, correct?

Add New Organisation - Role - Government

When creating an organization, there should be an option for Add New Organisation -> Role -> Government. This way we can have different Ministries as separate accounts but all with government privileges.

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.