Welcome to SaTT Wallet, a cutting-edge project in the realm of smart advertising. Our wallet leverages blockchain technology to offer a unique approach to managing and transacting with the Smart Advertising Transaction Token (SaTT). 🌐💰
Our project is composed of two main repositories:
-
Backend 🖥️: This part of the project provides the webservice for the SaTT Token WebWallet and the advertising campaign manager. It's primarily written in JavaScript.
-
Frontend 🎨: The frontend of the SaTT wallet is built using Angular, a robust framework in the TypeScript ecosystem.
We welcome developers who are passionate about decentralized technology, advertising, and improving user experience.
To contribute:
- Fork the repository you wish to contribute to (Backend or Frontend). 🍴
- Create a new branch for your feature. 🌿
- Make your changes and commit them with clear, concise messages. 📝
- Push your changes to your branch. 🚀
- Create a pull request. 🙏
We strongly encourage contributors to adhere to best coding practices, which include:
- Write clean, readable, and maintainable code. 🧹✨
- Use meaningful naming for variables, functions, classes, and modules. 🏷️
- Comment your code where necessary but strive to make your code as self-explanatory as possible. 🗂️
- Avoid large commits that make the code review process more difficult. Break your work into small, individual commits each with a specific purpose. 🧩
- Update and write tests when contributing to code. 🧪
If you have any questions or suggestions, please reach out to us at [email protected]. You can also follow our updates on Twitter at @SaTT_Token.
Happy coding! 🎉👩💻👨💻
This project is build in JavaScript for NodeJS and these main npm modules :
- You can check all our different smart contracts in contract folder:
- To Deploy smart contracts (token, campaign and oracle) in contract folder with Remix and Metamask or MEW:
**create your file on Remix and paste your code there
**Compile your file.sol and check
**To deploy your smart contract you should connect with your metamask account
- To create node, Web3 service provider with Geth,openethereum or Infura SaaS
**Create new Ethereum app
**Get node credentials from infura such as PROJECTID, PROJECT SECRET, and the endpoints that we can use to connect to infura node(https, wss)
WEB3_URL=process.env.WEB3_URL
You can also install Geth Node you can follow this Guide or Parity
- on campaign contract call modToken(<token_address>,true)
- on campaign contract call setOracle(<oracle_address>)
- on oracle contract call changeAsk(<campaign_address>,true)
To run SaTT API webservice Provider you will need NodeJS 14.0+ and npm Package manager
For development, you will only need Node.js and a node global package.
-
Just go on official Node.js website and download the installer. Also, be sure to have
git
available in your PATH,npm
might need it (You can find git here). -
You can install nodejs and npm easily with apt install, just run the following commands.
$ sudo apt install nodejs $ sudo apt install npm
node --version up to v14.x.x
npm --version up to 6.x.x
If the installation was successful, you should be able to run the following command. PM2 Process Manager, you can install it as described below :
npm install pm2 -g
- Clone the repo
git clone https://github.com/Atayen/node-satt.git
-
cd <project_name> npm install
3. Edit .env file with the right properties
4. Register and start PM2 service or install nodemon
```sh
pm2 start app.js
or
npm start
or
nodemon
After you run the project, you can navigate to https://localhost:3015/docs to see the full list of available endpoints.
The folder structure of this app is explained below:
Name | Description |
---|---|
node_modules | Contains all npm dependencies |
helpers | Contains all requirements and the cron job actions |
manager | Contains all the definitions of oracles |
conf | Contains all configuration for the blockChain part. |
controllers | Controllers define functions to serve various express routes. |
routes | Contain all express routes, separated by module/area of application . |
middlewares | Express middlewares which process the incoming requests before handling them down to the routes |
routes | Contain all express routes, separated by module/area of application |
app.js | Entry point to express app |
package.json | Contains npm dependencies as well as the scripts |
The swagger specification file is named as swagger.yaml. The file is located under definition folder. Example:
paths:
/hello:
get:
x-swagger-router-controller: helloWorldRoute
operationId: helloWorldGet
tags:
- /hello
description: >-
Returns the current weather for the requested location using the
requested unit.
parameters:
- name: greeting
in: query
description: Name of greeting
required: true
type: string
responses:
'200':
description: Successful request.
schema:
$ref: '#/definitions/Hello'
default:
description: Invalid request.
schema:
$ref: '#/definitions/Error'
definitions:
Hello:
properties:
msg:
type: string
required:
- msg
Error:
properties:
message:
type: string
required:
- message
-
/hello:
Specifies how users should be routed when they make a request to this endpoint.
-
x-swagger-router-controller: helloWorldRoute
Specifies which code file acts as the controller for this endpoint.
-
get:
Specifies the method being requested (GET, PUT, POST, etc.).
-
operationId: hello
Specifies the direct method to invoke for this endpoint within the controller/router
-
parameters:
This section defines the parameters of your endpoint. They can be defined as path, query, header, formData, or body.
-
definitions: This section defines the structure of objects used in responses or as parameters.
The project is using npm module swagger-tools
that provides middleware functions for metadata, security, validation and routing, and bundles Swagger UI into Express.
See the open issues for a list of proposed features (and known issues).
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- 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
-
To create a Facebook app you should visit official developer.facebook.com website and respect the following steps:
PS: All these credentials refer to APPID,APP_SECRET,FB_GRAPH_VERSION in .env file
APPID=process.env.APPID
APP_SECRET=process.env.APP_SECRET
FB_GRAPH_VERSION=process.env.FB_GRAPH_VERSION
-
To create a google app you should visit official console.developers.google.com website and respect the following steps:
PS: All this credentials refers to GOOGLE_CLIENTID,GOOGLE_CLIENT_SECRET and GDA_TAP_API_KEY in .env file
GOOGLE_CLIENTID=process.env.GOOGLE_CLIENTID
GOOGLE_CLIENT_SECRET=process.env.GOOGLE_CLIENT_SECRET
GDA_TAP_API_KEY= process.env.GDA_TAP_API_KEY
-
To create a linkedin app you should visit official developer.linkedin.com website and respect the following steps:
PS: All these credentials refer to LINKEDIN_KEY and LINKEDIN_SECRET in .env file
LINKEDIN_KEY=process.env.LINKEDIN_KEY
LINKEDIN_SECRET=process.env.LINKEDIN_SECRET
-
To create a linkedin app you should visit official developers.twitter.com website and respect the following steps:
you can regenerate again your credentials with more options
PS: All this credentials refers to TWITTER_CONSUMER_KEY_ALT, TWILTTER_CONSUMER_SECRET_ALT,TWITTER_CONSUMER_SECRET_DEV,TWITTER_CONSUMER_KEY TWITTER_CONSUMER_SECRET,TWITTER_ACCESS_TOKEN_KEY and TWITTER_ACCESS_TOKEN_SECRET in .env file
TWITTER_CONSUMER_KEY_ALT=process.env.TWITTER_CONSUMER_KEY_ALT
TWILTTER_CONSUMER_SECRET_ALT=process.env.TWILTTER_CONSUMER_SECRET_ALT
TWITTER_CONSUMER_SECRET_DEV=process.env.TWITTER_CONSUMER_SECRET_DEV
TWITTER_CONSUMER_KEY=process.env.TWITTER_CONSUMER_KEY
TWITTER_CONSUMER_SECRET=process.env.TWITTER_CONSUMER_SECRET
TWITTER_ACCESS_TOKEN_KEY=process.env.TWITTER_ACCESS_TOKEN_KEY
TWITTER_ACCESS_TOKEN_SECRET=process.env.TWITTER_ACCESS_TOKEN_SECRET
-
To create a Telegram bot you should set it via mobile Telegram application:
PS: This credential refers to TELEGRAM_BOT_TOKEN in .env file
TELEGRAM_BOT_TOKEN=process.env.TELEGRAM_BOT_TOKEN
We get data referred to Satt token from official coinmarketcap.com/api website and respect the following steps:
Distributed under the MIT License. See LICENSE
for more information.
For more information don't hesitate to contact us by email to [email protected]