# Getting Started

With the `dApp` development process in mind, Ontology has made available a one stop solution in order to assist developers with the initial learning curve and help them get acquainted with `dApp` development.

![Ontology Ecosystem](https://1077617372-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LvPXC4l2V4Z8gRDNIoZ%2F-Lx-PDXhrNHTtx5iW2c7%2F-Lx-QVsRDWCJlCjx9hGO%2Fontology-resources.png?alt=media\&token=4c8c56ff-4de2-4f9a-8488-bd4ed725ac43)

## dApp Fundamentals

`dApp` development can be conveniently understood as a composition of two elements- Smart contract development, and `dAPI` integration.

![](https://1077617372-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LvPXC4l2V4Z8gRDNIoZ%2F-LvPYTBbYX4L3mHx0vBh%2F-LvPYVF79kK6pNfMDngY%2Fdapp-dev-intro.jpg?generation=1575624771723414\&alt=media)

* When the `dApp` needs to synchronize and update its data from the chain, it can do so using any of Ontology's`SDKs`, or invoking the `Restful interface` or `RPC interface`. Feel free to check out the details regarding the aforementioned components.

{% hint style="info" %}
The `dApp` back end is not a necessary prerequisite. Certain `dApps` may not need a back end.
{% endhint %}

* The economic model of certain `dApps` requires tokens to implement key functionalities. If that is the case, the user may release tokens as and when needed. `OEP4` functionality in a smart contract, and smart contract sample code might be worth taking a look at. Please follow [this](https://github.com/ontio/OEPs/blob/master/OEPS/OEP-4.mediawiki) link for more details.
* Some special purpose `dApps` might need to store data on the chain. Consider taking a look at the following link for reference.

Generally speaking, the fundamental logic for most `dApps` completes within the scope of smart contracts. The various tools made available from Ontology's side help speed up development and deployment, or in some cases, migrate contracts from other chains onto Ontology. Ontology also provides the standard interface to interact with smart contracts, the `dAPIs`, thereby allowing the users to conveniently use `dApps` without compromising on security. There is no risk of losing the private key. The `dApp` developers have the freedom to solely focus on developing the core logic of the `dApp`.

Follow the link below to refer to the Ontology integration guides to start integrating Ontology into your dApps. There are also development guides available for reference that can be used to start developing applications and smart contracts.

{% content-ref url="guides-and-tutorials/development-guides" %}
[development-guides](https://docs.ont.io/guides-and-tutorials/development-guides)
{% endcontent-ref %}

{% content-ref url="guides-and-tutorials/integration-guides" %}
[integration-guides](https://docs.ont.io/guides-and-tutorials/integration-guides)
{% endcontent-ref %}

## Smart Contract Fundamentals

Smart contracts are the fundamental units of **logic** as far their usage within the blockchain ecosystem is concerned. Smart contracts implement functionality by **releasing assets** on **single**, or **multiple chains** based on the business **logic** and **architecture**, when certain fixed and acknowledged **contractual clauses** are fulfilled, or fail to fulfill. Hence, smart contracts can be used to program **complex logic** and functionality without any constraints in terms of industry.

**Ontology** provides **SmartX**, and IDE that facilitates smart contract development using **Python**, **C#** and **JavaScript** (Coming soon). SmartX has an in-built **compiler** and can be used to deploy and test smart contracts on the Ontology **TestNet**, a locally deployed **privatenet**, and the **MainNet**. It also includes **templates** of varying complexity that can be used by developers and enthusiasts alike. Follow the link below for more details on smart contracts.

{% content-ref url="ontology-elements/smart-contracts" %}
[smart-contracts](https://docs.ont.io/ontology-elements/smart-contracts)
{% endcontent-ref %}

## Deploying a Node Locally

Ontology node can be deployed on a local machines to test `dApp` and smart contract logic. The **punica suite** made available by Ontology serves as a **development framework** that includes all the necessary tools. Follow the link below for more details.

{% content-ref url="developer-tools/punica-suite" %}
[punica-suite](https://docs.ont.io/developer-tools/punica-suite)
{% endcontent-ref %}
