SaTT Wallet ๐๐ผ
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). ๐๐ฐ
Project Overview ๐
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.
How to Contribute ๐ช๐ง
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. ๐งช
Get in Touch ๐๐ง
If you have any questions or suggestions, please reach out to us at contact@satt-token.com. You can also follow our updates on Twitter at @SaTT_Token.
Happy coding! ๐๐ฉโ๐ป๐จโ๐ป
Built With
This project is build in JavaScript for NodeJS and these main npm modules :
Blockchain deployment
- 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)
Getting Started
To run SaTT API webservice Provider you will need NodeJS 14.0+ and npm Package manager
Prerequisites
For development, you will only need Node.js and a node global package.
Node
-
Node installation on Windows
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). -
Node installation on Ubuntu
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
Installation
- 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
Usage
After you run the project, you can navigate to https://localhost:3015/docs to see the full list of available endpoints.
Project Structure
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 |
Swagger
Specification
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
Highlights of the swagger.yaml File
-
/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.
Swagger Middleware
The project is using npm module swagger-tools
that provides middleware functions for metadata, security, validation and routing, and bundles Swagger UI into Express.
Roadmap
See the open issues for a list of proposed features (and known issues).
Contributing
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
Social networks
-
Facebook configuration
To create a Facebook app you should visit official developer.facebook.com website and respect the following steps:
Create an app
Confirm app creation
Get Facebook credentials
Get Facebook version
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
-
Google configuration
To create a google app you should visit official console.developers.google.com website and respect the following steps:
Create Credentials
Fill out the form
Get Client credentials
Create Youtube configuration
Get Youtube configuration
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
-
LinkedIn configuration
To create a linkedin app you should visit official developer.linkedin.com website and respect the following steps:
Create a new app
Get linkedin crededentials
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
-
Twitter configuration
To create a linkedin app you should visit official developers.twitter.com website and respect the following steps:
Create a new app
Set params for your app
Get your twitter credentials
Get your twitter credentials
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
-
Telegram configuration
To create a Telegram bot you should set it via mobile Telegram application:
BotFather
Get your confirmation
PS: This credential refers to TELEGRAM_BOT_TOKEN in .env file
TELEGRAM_BOT_TOKEN=process.env.TELEGRAM_BOT_TOKEN
-
CoinMarketCap
We get data referred to Satt token from official coinmarketcap.com/api website and respect the following steps:
Create your account
Get your credentials
License
Distributed under the MIT License. See LICENSE
for more information.
Contact
For more information don't hesitate to contact us by email to dev@atayen.us