0.0.14 • Published 3 years ago

apixpress v0.0.14

Weekly downloads
-
License
MIT
Repository
-
Last release
3 years ago

apiXpress a web services facilities

An open source framework (node, express.js, Restfull CRUD api) to host and sale webservices. To benefit from this framework, 2 options:

  • install a stand alone server in 1 hour to sale (in €/$ or in crypto) hosting anonymous encrypted web space for your clients.
  • fork into a private cloud to manage data and create web interface to manage workflow process of your clients and forget boring stuf about authentification, data management, security, front, back ...

Services are totaly independant of any data to process (except authentification for end user privacy)

RGPD by design, a register account can be anonymous (no need of personnal data, no name, no email, IP can be easily changed with a Tor browser). Data can be fully encrypted and readable only from an enduser's provate key into a web browser. No content responsabilities can be engage against an hoster, only end user knows its data.

User Authentification, 2 profils (admin/manager) allow to manage internet private space accessible with a domain name with accessright to allow a profil (userx) to access his file (encrypted or not).

Referentials Management, a multilanguage data manager to feed any webapp or app with relevant language and data control without heavy database as mongodb, mysql...

Blockchain apiXpress, a decentralized network based on any public apiXpress node using a proof of stack to allow any server owner to monetize (at a lower cost than €/$) hardware ressources and to provide any end user account to manage a crypto wallet.

An apiXpress webapp, a GUI to interact with the api and manage addOn for dev to provide securely encrypted js code to apiXpress hoster and monetize usage of your service by a micro payment crypto. Uncrypt or decentralized usage need a granted from author of encrypted js code.

For who

apiXpress aims to provide a decentralized eco-system to help tech people to monetize development that will help no tech people to sale data, services or products. The blockchain based on a proof of stack of each apiXpress node produce AXSS token valuable inside the apiXpress network to buy/exchange anything from anyone with a wallet (pub/priv key), anything can be simply $, btc...

Admin sys that know how to manage and secure a linux server that want to sale, anonymously or not web space to client with no content media responsabilities. Those clients would host any PWA (Progressiv Web App means no need of heavy server ressource), store encrypted backup data, sharing with the guaranty that only granted can read it (in opposition of google cloud, Azur, many hoster...).

back-end node developer that wants to monetize with a crypto token (AXSS) valuable inside the apiXpress Network to buy anythings by anyone (anything can be simply $, btc,...).

fullstack node developper that wants to save time to deliver a new feature into an apiXpress node or a private dedicated instance of apiXpress for his client.

no tech people that want to monetize content with a reputation based on a blockchain anonymously or not, using web solution providing by fullstack node developper.

apiXpress team member this is open source and we need also to sale our service to eat. We decide to implement a crypto, based on a blockchain also to reward the early adopter to help making this ambitious project a success. We strongly beleive in the cypher punk philosophy french :cypher punk manifesto english: cypher punk manifesto. They are a lot to do and we are happy to onboard any skill (IT or not) that share our philosophy.

Documentation process:

  • List of services in this README file
  • Each services have a wiki page as a "HOW TO USE IT"
  • Dev documentation is include in the code organise by route and model and some example of access to frontend dev can be accessible into AdvancedRestClient app ((https://install.advancedrestclient.com/install) a .arc file is store at /route/name.arc to test /route/name.js.

The scalability of this framework can be manage with multiple instance: service1.ndda.fr service2.ndda.fr ... You can use on many small server (RaspeberryPi, old server, old PC...) until you have a good upload/download web access (fiber is excellent). It depends of ressources consuming by your available services, if it's just hosting web page for a few trafic a raspberryPi is fine, if you host an intensive OpenAI to process data you need a strong server to deliver result.

HOW TO USE IT

List of middleware

**checkHeaders.js** Check that headers variable expected are presents any request need to validate this that identify for which clientId or xworkOn request is. 
**isAuthenticated.js** Check that the token for this uuid user exist and is no older than 1day, only used as a module, because token are not store into this instance.
**haveAccessrighttoanobject.js** Check login user par domain ACCESSRIGHT.data{domain:{object:"CRUDO"}} if O ownedby of object contain user login uiid then he can also delete (RGPD by design) 

As dev you can bypass authentification to test new route see Set up for development

List of available's services:

/users

get     /users/isauth return 200 if token and uuid is valid if not return 403
post    /users/login check login/psw 
get     /users/getlinkwithoutpsw/:email send to email with link available for one day containing token + user uuid
post    /users/register create a basic user without authentification any right to a clientId used to collect contact as potential user, possibility to simply create a form with contact
post    /users/create create a user with authentification right to a clientId (@TODO)
get     /users/info/:listindex return collection of id user order by index /object/searchindex/listindex.json
get     /users/list/:filter/:field return depending of accessright list of payload.user = {data:[{user}]}
get     /users/uuid/:id return payload.data={user} with full profil information edpending of accessright of the requester
put     /users/chgpsw/:id  submit a new password to update for id that have to be himself
post    /users/uuid  create a new user with at least body {EMAIL,LOGIN,UUID}
put     /users/uuid/:id  update user id with field inside body after checking accessright (object users)
delete  /users/uuid/:id  remove user id /users/id.json and update /searchindex (careffull this means that you can have uuid without user)

/referentials

Referentials manager that allow to manage multi languages referentials to provide webapp referential. Common referential like postcode or any transversal referential (that is uploaded from external sources) can be store into apiXpress. And then make it available until noauth is require using

get /referentials/clientconf/:keylist with keylist= key1_key2.... return a jsonp with full non sensible information like secret keys
get /referentials/content/:source/:idref   deliver a source (data | json | object ) named idref in language of the header request 'xlang' 
get /referentials/contentnoauth/:source/:idref same /content/ without authentification.
get /referentials/contentfull/:source/:idref same /content but with all language in.
put /referentials/:source/:idref replace domaine/clientid/referentials/dataMAnagement/source/idref with the jsonp send into the PUT request
get /referentials/clientconfglob return full list of clientconf in jsonp (need auhtentification)
get /referentials/lg return list of accept-language

/outputs

data processing send to deliver result post /outputs/pdf from a json (containing relevant data) => final pdf document in response

post /outputs/msg
from a json => massive personnalized emailing sent

/uploadfiles

service that can upload in efficient way any file (json, if to big to be sent in a POST request)
any files uploaded are only temporary file to process (no data can be store on this service)
each day a cleaning process is apply to remove tmp file older than 24 hours

/tags

Tags allow to record any trackers into app and store results waiting a process to request a mv
@TODO test needed need to create folder for client id if doesn't exist

/blockchains

@TODO manage a blockchain used by user (public key add in user.json) based on proof of stack (to be able to be eligible to store a new block you need to have a minimum of crypto).  

A webapp to start yours

apiXpress serves services with authentification. a webapp is already set to manage user, referentials, crypto wallet to provide an end user solution to interact with. This app can evolve by adding your own menu and screen.

ROADMAP

apiXpress

0 - referentials.js add static route for each object /maildigits/[websitename] to test website modification (update file etc..) example in devmaildigit example: app.use('/pvm/pvmsaveurs', express.static(`${config.domain}/pvm/maildigits/pvmsaveurs`)); to make available https://xx/pvm/pvmsaveurs 
0 - Maildigits.js doc/training for dev to create a full customizable webapp from a buying template with maildigits ready to sale into apixpress
0 - Maildigits.js interface for end user to create his own website from a customizable template online
0 - blockchain.js create inital block and update process with crypto rewardings
1 - blockchain.js synchronisation of node user (1 user per apiXpress Service) check whois running live and check number of crypto (more you have more the chance to be eligible is high with a cap system)
2 - blockchain.js to manage transaction between 2 users (public key)
3 - blockchain.js request information to get visibility into bc (get by public key) 
4 - secure process to install et set a new module into a node to increase node's functionnalities
5 - a e-commerce website to sell crypto or items 

webapp

/devdata/domaine/apixpress

0 - menu.js process to add a screen in webapp
1 - user management to manage user's list into a node from an admin acount
2 - referential management to add/remove/update json file in multilanguage
3 - a webpage with all available module per node and a kind of marketplace connected to all public items

Documentation

1 - user stories of apiXpress (how to open an account)
2 - step by step to open an account on a apiXprss node and start using crypto
3 - how to add item to sell it