Compare commits
No commits in common. "master" and "5c6c14fcc510d377046475acfbc8b4f25471d11a" have entirely different histories.
master
...
5c6c14fcc5
286 changed files with 52913 additions and 4394 deletions
10
.eslintrc
10
.eslintrc
|
@ -1,10 +0,0 @@
|
|||
{
|
||||
parser: "babel-eslint",
|
||||
"plugins": [
|
||||
"react"
|
||||
],
|
||||
"rules": {
|
||||
"max-len": [1, 120, 2, {ignoreComments: true}]
|
||||
},
|
||||
"extends": ["eslint:recommended", "plugin:react/recommended"]
|
||||
}
|
32
.gitignore
vendored
32
.gitignore
vendored
|
@ -1,24 +1,10 @@
|
|||
# See https://help.github.com/ignore-files/ for more about ignoring files.
|
||||
|
||||
# dependencies
|
||||
/node_modules
|
||||
|
||||
# testing
|
||||
/coverage
|
||||
|
||||
# production
|
||||
/build
|
||||
|
||||
# misc
|
||||
.DS_Store
|
||||
.env.local
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
.idea
|
||||
|
||||
*.key
|
||||
*.crt
|
||||
*.pem
|
||||
client/src/static/disabled/
|
||||
node_modules/
|
||||
outputDir/
|
||||
client/package-lock.json
|
||||
package-lock.json
|
||||
yarn.lock
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
public/img/.tinypng-sigs
|
||||
acme/
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# PalmPay.io Website files
|
||||
|
||||
Feel free to copy any/all of these files if you are creating a clone site such as PalmPay.se, PalmPay.pt, PalmPay.mx, PalmPay.my, PalmPay.ca, PalmPay.pro, PalmPay.solutions, PalmPay.ch, etc
|
||||
Feel free to copy any/all of these files if you are creating a clone site such as PalmPay.se, PalmPay.pt, PalmPay.mx, PalmPay.my, PalmPay.ca, PalmPay.pro, etc
|
||||
|
||||
Any questions, feel free to ping us on..
|
||||
Matrix: http://agorise.chat
|
||||
Session: 052f99b1965cb2a54ac516d29d122f5ec7b13e30209c31e9f57f820e7008336758
|
||||
Telegram: https://t.me/Agorise
|
||||
Keybase: https://keybase.io/team/Agorise
|
||||
|
|
18
app.js
Normal file
18
app.js
Normal file
|
@ -0,0 +1,18 @@
|
|||
var compression = require("compression");
|
||||
var createError = require("http-errors");
|
||||
var express = require("express");
|
||||
var path = require("path");
|
||||
|
||||
var app = express();
|
||||
|
||||
app.use(compression());
|
||||
app.use(express.json());
|
||||
app.use(express.urlencoded({ extended: false }));
|
||||
app.use(express.static(path.join(__dirname, "public")));
|
||||
app.use("/marketing",express.static(path.join(__dirname, 'public')));
|
||||
app.use("/", express.static(path.join(__dirname, "./client/build")));
|
||||
app.get("*", function(request, response) {
|
||||
response.sendFile(path.resolve(__dirname, "./client/build", "index.html"));
|
||||
});
|
||||
|
||||
module.exports = app;
|
17
appdev.js
Normal file
17
appdev.js
Normal file
|
@ -0,0 +1,17 @@
|
|||
|
||||
var createError = require('http-errors');
|
||||
var express = require('express');
|
||||
var path = require('path');
|
||||
var cookieParser = require('cookie-parser');
|
||||
var logger = require('morgan');
|
||||
var router = express.Router();
|
||||
|
||||
var app = express();
|
||||
|
||||
app.use(logger('dev'));
|
||||
app.use(express.json());
|
||||
app.use(express.urlencoded({ extended: false }));
|
||||
|
||||
app.use(express.static(path.join(__dirname, 'public')));
|
||||
app.use("/marketing",express.static(path.join(__dirname, 'public')));
|
||||
module.exports = app;
|
98
bin/www
Normal file
98
bin/www
Normal file
|
@ -0,0 +1,98 @@
|
|||
#!/usr/bin/env node
|
||||
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var app = require("../app");
|
||||
var debug = require("debug")("palmpay:server");
|
||||
var http = require("http");
|
||||
var fs = require("fs");
|
||||
var https = require("https");
|
||||
|
||||
const key = fs.readFileSync('./acme/etc/live/palmpay.io/privkey.pem', 'utf8');
|
||||
const cert = fs.readFileSync('./acme/etc/live/palmpay.io/cert.pem', 'utf8');
|
||||
const ca = fs.readFileSync('./acme/etc/live/palmpay.io/chain.pem', 'utf8');
|
||||
|
||||
var ssl_options = {
|
||||
key: key,
|
||||
cert: cert,
|
||||
ca: ca
|
||||
};
|
||||
|
||||
/**
|
||||
* Get port from environment and store in Express.
|
||||
*/
|
||||
|
||||
var port = normalizePort(process.env.PORT || "80");
|
||||
app.set("port", port);
|
||||
|
||||
/**
|
||||
* Create HTTP/HTTPS server.
|
||||
*/
|
||||
var secureServer = https.createServer(ssl_options, app);
|
||||
var server = http.createServer(app);
|
||||
|
||||
/**
|
||||
* Listen on provided port, on all network interfaces.
|
||||
*/
|
||||
secureServer.listen(443);
|
||||
server.listen(port);
|
||||
server.on("error", onError);
|
||||
server.on("listening", onListening);
|
||||
|
||||
/**
|
||||
* Normalize a port into a number, string, or false.
|
||||
*/
|
||||
|
||||
function normalizePort(val) {
|
||||
var port = parseInt(val, 10);
|
||||
|
||||
if (isNaN(port)) {
|
||||
// named pipe
|
||||
return val;
|
||||
}
|
||||
|
||||
if (port >= 0) {
|
||||
// port number
|
||||
return port;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Event listener for HTTP server "error" event.
|
||||
*/
|
||||
|
||||
function onError(error) {
|
||||
if (error.syscall !== "listen") {
|
||||
throw error;
|
||||
}
|
||||
|
||||
var bind = typeof port === "string" ? "Pipe " + port : "Port " + port;
|
||||
|
||||
// handle specific listen errors with friendly messages
|
||||
switch (error.code) {
|
||||
case "EACCES":
|
||||
console.error(bind + " requires elevated privileges");
|
||||
process.exit(1);
|
||||
break;
|
||||
case "EADDRINUSE":
|
||||
console.error(bind + " is already in use");
|
||||
process.exit(1);
|
||||
break;
|
||||
default:
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Event listener for HTTP server "listening" event.
|
||||
*/
|
||||
|
||||
function onListening() {
|
||||
var addr = server.address();
|
||||
var bind = typeof addr === "string" ? "pipe " + addr : "port " + addr.port;
|
||||
debug("Listening on " + bind);
|
||||
}
|
86
bin/wwwdev
Normal file
86
bin/wwwdev
Normal file
|
@ -0,0 +1,86 @@
|
|||
#!/usr/bin/env node
|
||||
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var app = require("../appdev");
|
||||
var debug = require("debug")("palmpay:server");
|
||||
var http = require("http");
|
||||
|
||||
/**
|
||||
* Get port from environment and store in Express.
|
||||
*/
|
||||
|
||||
var port = normalizePort(process.env.PORT || "3000");
|
||||
app.set("port", port);
|
||||
|
||||
/**
|
||||
* Create HTTP server.
|
||||
*/
|
||||
|
||||
var server = http.createServer(app);
|
||||
|
||||
/**
|
||||
* Listen on provided port, on all network interfaces.
|
||||
*/
|
||||
|
||||
server.listen(port);
|
||||
server.on("error", onError);
|
||||
server.on("listening", onListening);
|
||||
|
||||
/**
|
||||
* Normalize a port into a number, string, or false.
|
||||
*/
|
||||
|
||||
function normalizePort(val) {
|
||||
var port = parseInt(val, 10);
|
||||
|
||||
if (isNaN(port)) {
|
||||
// named pipe
|
||||
return val;
|
||||
}
|
||||
|
||||
if (port >= 0) {
|
||||
// port number
|
||||
return port;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Event listener for HTTP server "error" event.
|
||||
*/
|
||||
|
||||
function onError(error) {
|
||||
if (error.syscall !== "listen") {
|
||||
throw error;
|
||||
}
|
||||
|
||||
var bind = typeof port === "string" ? "Pipe " + port : "Port " + port;
|
||||
|
||||
// handle specific listen errors with friendly messages
|
||||
switch (error.code) {
|
||||
case "EACCES":
|
||||
console.error(bind + " requires elevated privileges");
|
||||
process.exit(1);
|
||||
break;
|
||||
case "EADDRINUSE":
|
||||
console.error(bind + " is already in use");
|
||||
process.exit(1);
|
||||
break;
|
||||
default:
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Event listener for HTTP server "listening" event.
|
||||
*/
|
||||
|
||||
function onListening() {
|
||||
var addr = server.address();
|
||||
var bind = typeof addr === "string" ? "pipe " + addr : "port " + addr.port;
|
||||
debug("Listening on " + bind);
|
||||
}
|
21
client/.gitignore
vendored
Normal file
21
client/.gitignore
vendored
Normal file
|
@ -0,0 +1,21 @@
|
|||
# See https://help.github.com/ignore-files/ for more about ignoring files.
|
||||
|
||||
# dependencies
|
||||
/node_modules
|
||||
|
||||
# testing
|
||||
/coverage
|
||||
|
||||
# production
|
||||
/build
|
||||
|
||||
# misc
|
||||
.DS_Store
|
||||
.env.local
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
21
client/package.json
Normal file
21
client/package.json
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
"name": "client",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"express": "^4.16.3",
|
||||
"mdbreact": "^4.5.0",
|
||||
"react": "^16.4.1",
|
||||
"react-dom": "^16.4.1",
|
||||
"react-ripples": "^1.1.2",
|
||||
"react-scripts": "1.1.4",
|
||||
"react-scroll": "^1.7.9"
|
||||
},
|
||||
"scripts": {
|
||||
"start": "react-scripts start",
|
||||
"build": "react-scripts build",
|
||||
"test": "react-scripts test --env=jsdom --watchAll",
|
||||
"eject": "react-scripts eject"
|
||||
},
|
||||
"proxy": "http://localhost:3001"
|
||||
}
|
|
@ -3,29 +3,31 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<title>PalmPay - Point of Sale software</title>
|
||||
<title>PalmPay</title>
|
||||
|
||||
<!-- FB Open Graph data -->
|
||||
<meta property="og:title" content="PalmPay">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:image" content="http://palmpay.io/PalmPayIO.png">
|
||||
<meta property="og:description" content="Cryptocurrencies bring Global Sales; HIVE, HBD, BTS, Bitcoin, Bitcoin Cash, bitUSD, bitEUR, bitMXN, Litecoin and more.">
|
||||
<meta property="og:description" content="Cryptocurrencies bring Global Sales; Bitcoin Cash, bitUSD, bitEUR, bitRUB, bitXCD, bitSilver, Steem, Litecoin and more.">
|
||||
<meta property="og:url" content="http://palmpay.io/">
|
||||
|
||||
<!-- Twitter Card data -->
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="PalmPay">
|
||||
<meta name="twitter:description" content="Cryptocurrencies bring Global Sales; HIVE, HBD, BTS, Bitcoin, Bitcoin Cash, bitUSD, bitEUR, bitMXN, Litecoin and more.">
|
||||
<meta name="twitter:description" content="Cryptocurrencies bring Global Sales; Bitcoin Cash, bitUSD, bitEUR, bitRUB, bitXCD, bitSilver, Steem, Litecoin and more.">
|
||||
<meta name="twitter:image" content="http://palmpay.io/PalmPayIO.png">
|
||||
<meta name="twitter:url" content="http://palmpay.io/">
|
||||
|
||||
<!--
|
||||
manifest.json provides metadata used when your web app is added to the
|
||||
homescreen on Android. See https://developers.google.com/web/fundamentals/engage-and-retain/web-app-manifest/
|
||||
-->
|
||||
<link rel="manifest" href="%PUBLIC_URL%/manifest.json">
|
||||
<link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico">
|
||||
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png?v4=eE58gaorm5">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png?v4=eE58gaorm5">
|
||||
<link rel="icon" type="image/png" sizes="194x194" href="/favicon-194x194.png?v4=eE58gaorm5">
|
||||
<link rel="icon" type="image/png" sizes="192x192" href="/android-chrome-192x192.png?v4=eE58gaorm5">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png?v4=eE58gaorm5">
|
||||
<link rel="manifest" href="/site.webmanifest?v4=eE58gaorm5">
|
||||
<link rel="mask-icon" href="/safari-pinned-tab.svg?v4=eE58gaorm5" color="#128f52">
|
||||
<link rel="shortcut icon" href="/favicon.ico?v4=eE58gaorm5">
|
||||
<meta name="apple-mobile-web-app-title" content="PalmPay">
|
||||
<meta name="application-name" content="PalmPay">
|
||||
<meta name="msapplication-TileColor" content="#128f52">
|
241
client/src/App.js
Normal file
241
client/src/App.js
Normal file
|
@ -0,0 +1,241 @@
|
|||
import React from "react";
|
||||
import { Footer, Row, Col, Modal, ModalBody, ModalHeader } from "mdbreact";
|
||||
import { BrowserRouter as Router } from "react-router-dom";
|
||||
import { Events, animateScroll as scroll, scrollSpy } from "react-scroll";
|
||||
import HomeNav from "./components/HomeNav";
|
||||
import MarketingNav from "./components/MarketingNav";
|
||||
import "./index.css";
|
||||
import "./static/css/palmpay.css";
|
||||
|
||||
//import './static/css/palmpay.css';
|
||||
|
||||
import Routes from "./Routes";
|
||||
|
||||
class App extends React.Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.state = { showmenu: true };
|
||||
this.state = {
|
||||
collapse: false,
|
||||
modal2: false
|
||||
};
|
||||
this.toggle2 = this.toggle2.bind(this);
|
||||
this.onClick = this.onClick.bind(this);
|
||||
this.handleNavbarClick = this.handleNavbarClick.bind(this);
|
||||
}
|
||||
|
||||
toggle2() {
|
||||
this.setState({
|
||||
modal2: !this.state.modal2
|
||||
});
|
||||
}
|
||||
|
||||
onClick() {
|
||||
this.setState({
|
||||
collapse: !this.state.collapse
|
||||
});
|
||||
}
|
||||
|
||||
handleNavbarClick() {
|
||||
this.setState({
|
||||
collapse: false
|
||||
});
|
||||
}
|
||||
componentDidMount() {
|
||||
Events.scrollEvent.register("begin", function(to, element) {
|
||||
console.log("begin", arguments);
|
||||
});
|
||||
|
||||
Events.scrollEvent.register("end", function(to, element) {
|
||||
console.log("end", arguments);
|
||||
});
|
||||
|
||||
scrollSpy.update();
|
||||
}
|
||||
componentWillUnmount() {
|
||||
Events.scrollEvent.remove("begin");
|
||||
Events.scrollEvent.remove("end");
|
||||
}
|
||||
scrollToTop() {
|
||||
scroll.scrollToTop();
|
||||
}
|
||||
scrollToBottom() {
|
||||
scroll.scrollToBottom();
|
||||
}
|
||||
scrollTo() {
|
||||
scroll.scrollTo(100);
|
||||
}
|
||||
scrollMore() {
|
||||
scroll.scrollMore(100);
|
||||
}
|
||||
handleSetActive(to) {
|
||||
console.log(to);
|
||||
}
|
||||
|
||||
render() {
|
||||
const currentPath = window.location.pathname;
|
||||
const collapsed = this.state.collapsed;
|
||||
const overlay = (
|
||||
<div
|
||||
id="sidenav-overlay"
|
||||
style={{ backgroundColor: "transparent" }}
|
||||
onClick={this.handleNavbarClick}
|
||||
/>
|
||||
);
|
||||
return (
|
||||
<Router>
|
||||
<span id="apppage">
|
||||
{!currentPath.includes("marketing") ? (
|
||||
<HomeNav toggle2={this.toggle2} />
|
||||
) : (
|
||||
<MarketingNav />
|
||||
)}
|
||||
{collapsed && overlay}
|
||||
|
||||
<Routes />
|
||||
|
||||
<Footer className="footer text-center">
|
||||
<div className="containerfix">
|
||||
<Row className="vertical-align footerrow">
|
||||
<Col md="4">
|
||||
<img alt="" src="./img/footerlogo.png" />
|
||||
</Col>
|
||||
|
||||
<Col md="4">
|
||||
<ul className="list-inline social-buttons">
|
||||
<li className="list-inline-item">
|
||||
<a
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
href="https://t.me/Agorise">
|
||||
<i className="fa fa-telegram" />
|
||||
</a>
|
||||
</li>
|
||||
<li className="list-inline-item">
|
||||
<a
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
href="https://twitter.com/Agorise_world">
|
||||
<i className="fa fa-twitter" />
|
||||
</a>
|
||||
</li>
|
||||
<li className="list-inline-item">
|
||||
<a
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
href="https://youtube.com/Agorise">
|
||||
<i className="fa fa-youtube" />
|
||||
</a>
|
||||
</li>
|
||||
<li className="list-inline-item">
|
||||
<a
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
href="https://d.tube/c/agorise">
|
||||
<img alt="" src="./img/dtube.png" />
|
||||
</a>
|
||||
</li>
|
||||
<li className="list-inline-item">
|
||||
<a
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
href="https://steemit.com/@Agorise">
|
||||
<img alt="" src="./img/steemit.png" />
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</Col>
|
||||
<Col md="4">
|
||||
<p className="mb-0">
|
||||
<span id="ft_lang1">FASTER AND SAFER THAN CASH</span>
|
||||
</p>
|
||||
</Col>
|
||||
</Row>
|
||||
|
||||
<div
|
||||
className="copyright py-3 text-center text-white"
|
||||
style={{ fontSize: "0.8em" }}>
|
||||
<div>
|
||||
<div className="row vertical-align">
|
||||
<div className="col-md-10 mx-md-auto">
|
||||
<p>
|
||||
<span id="cp_lang1">
|
||||
This website is not intended as legal or financial
|
||||
advice, is not a guarantee of anything and we do not
|
||||
collect any info about you whatsoever. PalmPay is a
|
||||
Point Of Sale product by Agorise, Ltd. For technical
|
||||
details, chat anytime 24/7 with the Agorise community
|
||||
on Telegram at:
|
||||
<a
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
href="http://t.me/Agorise">
|
||||
{" "}
|
||||
http://t.me/Agorise
|
||||
</a>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="row vertical-align">
|
||||
<div className="col-md-4" />
|
||||
<div className="col-md-4">
|
||||
<small>
|
||||
© Copyright {new Date().getFullYear()}{" "}
|
||||
<a
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
href="http://agorise.world/">
|
||||
{" "}
|
||||
Agorise Ltd.{" "}
|
||||
</a>
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="row justify-content-end">
|
||||
<div
|
||||
style={{ fontSize: "0.8em" }}
|
||||
className="text-white col-md-2">
|
||||
<small>
|
||||
Site by:{" "}
|
||||
<a
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
href="https://about.me/poqdavid">
|
||||
poqdavid
|
||||
</a>
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Footer>
|
||||
|
||||
<Modal isOpen={this.state.modal2} toggle={this.toggle2}>
|
||||
<ModalHeader toggle={this.toggle2}>
|
||||
<span id="mdl_lang1">Downloads</span>
|
||||
</ModalHeader>
|
||||
<ModalBody className="text-center">
|
||||
<a
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
href="https://play.google.com/store/apps/details?id=cy.agorise.palmpay">
|
||||
<img
|
||||
alt=""
|
||||
className="logo1"
|
||||
src="https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png"
|
||||
height="60"
|
||||
width="auto"
|
||||
/>
|
||||
</a>
|
||||
</ModalBody>
|
||||
</Modal>
|
||||
</span>
|
||||
</Router>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export default App;
|
168
client/src/App.test.js
Normal file
168
client/src/App.test.js
Normal file
|
@ -0,0 +1,168 @@
|
|||
import React from 'react';
|
||||
import { Button, Navbar, NavbarBrand, NavbarNav, NavbarToggler, Collapse, NavItem, Footer, NavLink, Mask, Row, Col, Fa, View, Container, Modal, ModalBody, ModalHeader, ModalFooter} from 'mdbreact';
|
||||
import { BrowserRouter as Router } from 'react-router-dom';
|
||||
import './index.css';
|
||||
import './static/css/palmpay.css';
|
||||
|
||||
//import './css/csslider.css';
|
||||
|
||||
import Routes from './Routes';
|
||||
|
||||
class App extends React.Component {
|
||||
|
||||
|
||||
constructor(props) {
|
||||
super(props),
|
||||
this.state = {
|
||||
collapse : false,
|
||||
modal2: false
|
||||
}
|
||||
this.toggle2 = this.toggle2.bind(this);
|
||||
this.onClick = this.onClick.bind(this);
|
||||
this.handleNavbarClick = this.handleNavbarClick.bind(this);
|
||||
}
|
||||
|
||||
toggle2() {
|
||||
this.setState({
|
||||
modal2: !this.state.modal2
|
||||
});
|
||||
}
|
||||
|
||||
onClick(){
|
||||
this.setState({
|
||||
collapse: !this.state.collapse,
|
||||
});
|
||||
}
|
||||
|
||||
handleNavbarClick(){
|
||||
this.setState({
|
||||
collapse: false
|
||||
});
|
||||
}
|
||||
render(){
|
||||
const collapsed = this.state.collapsed;
|
||||
const overlay = <div id="sidenav-overlay" style={{backgroundColor: 'transparent'}} onClick={this.handleNavbarClick}/>
|
||||
return (
|
||||
<Router>
|
||||
<div id="apppage" className="flyout">
|
||||
|
||||
<Navbar dark expand="md" fixed="top" id="mainNav" scrolling>
|
||||
<Container>
|
||||
<NavbarBrand>
|
||||
<img className="logo1" src="./img/logo.png" width="100%"></img>
|
||||
<img className="logo2" src="./img/logo54.png" width="100%" style={{display: 'none'}}></img>
|
||||
</NavbarBrand>
|
||||
<NavbarToggler onClick = { this.onClick } />
|
||||
<Collapse isOpen = {this.state.collapse} navbar>
|
||||
<NavbarNav right>
|
||||
<NavItem>
|
||||
<NavLink to="#services"><span id="nav_lang1">Services</span></NavLink>
|
||||
</NavItem>
|
||||
<NavItem>
|
||||
<NavLink to="#about"><span id="nav_lang2">About</span></NavLink>
|
||||
</NavItem>
|
||||
<NavItem>
|
||||
<NavLink to="#testimonies"><span id="nav_lang3">Testimonies</span></NavLink>
|
||||
</NavItem>
|
||||
<NavItem>
|
||||
<NavLink to="#!" onClick={this.toggle2}><span id="nav_lang4">Downloads</span></NavLink>
|
||||
</NavItem>
|
||||
<NavItem>
|
||||
</NavItem>
|
||||
</NavbarNav>
|
||||
<ul className="nav navbar-nav navbar-right fix-li-menu" multilinks-noscroll="true" id="langs"></ul>
|
||||
</Collapse>
|
||||
</Container>
|
||||
</Navbar>
|
||||
{ collapsed && overlay}
|
||||
<Routes />
|
||||
|
||||
<Footer className="footer text-center">
|
||||
<div className="containerfix">
|
||||
<Row className="vertical-align">
|
||||
<Col md="4">
|
||||
<img src="./img/footerlogo.png"></img>
|
||||
</Col>
|
||||
|
||||
<Col md="4">
|
||||
<ul className="list-inline social-buttons">
|
||||
<li className="list-inline-item">
|
||||
<a target="_blank" href="https://t.me/Agorise">
|
||||
<i className="fa fa-telegram"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li className="list-inline-item">
|
||||
<a target="_blank" href="https://twitter.com/Agorise_world">
|
||||
<i className="fa fa-twitter"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li className="list-inline-item">
|
||||
<a target="_blank" href="https://youtube.com/Agorise">
|
||||
<i className="fa fa-youtube"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li className="list-inline-item">
|
||||
<a target="_blank" href="https://d.tube/c/agorise">
|
||||
<img src="./img/dtube.png"></img>
|
||||
</a>
|
||||
</li>
|
||||
<li className="list-inline-item">
|
||||
<a target="_blank" href="https://steemit.com/@Agorise">
|
||||
<img src="./img/steemit.png"></img>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</Col>
|
||||
<Col md="4">
|
||||
|
||||
<p className="mb-0">
|
||||
<span id="ft_lang1">FASTER AND SAFER THAN CASH</span>
|
||||
</p>
|
||||
</Col>
|
||||
</Row>
|
||||
</div>
|
||||
</Footer>
|
||||
|
||||
|
||||
|
||||
<div className="copyright py-3 text-center text-white" style={{fontSize:'0.8em'}}>
|
||||
<div className="containerfix">
|
||||
<div className="row vertical-align">
|
||||
<div className="col-md-12">
|
||||
<p>
|
||||
<span id="cp_lang1">
|
||||
This website is not intended as legal or financial advice, is not a guarantee of anything and we do not collect any info about you whatsoever. PalmPay is a Point Of Sale product by Agorise, Ltd. For technical details, chat anytime 24/7 with the Agorise community on Telegram at:
|
||||
<a target="_blank" href="http://t.me/Agorise"> http://t.me/Agorise</a>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<div className="row vertical-align">
|
||||
|
||||
<div className="col-md-4"></div>
|
||||
<div className="col-md-4">
|
||||
|
||||
<small>© Copyright {(new Date().getFullYear())} <a target="_blank" href="http://agorise.world/"> Agorise Ltd. </a></small>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<Modal isOpen={this.state.modal2} toggle={this.toggle2}>
|
||||
<ModalHeader toggle={this.toggle2}><span id="mdl_lang1">Downloads</span></ModalHeader>
|
||||
<ModalBody className="text-center">
|
||||
<a target="_blank" href="https://play.google.com/store/apps/details?id=cy.agorise.palmpay"><img className="logo1" src="https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png" height="60" width="auto"></img></a>
|
||||
</ModalBody>
|
||||
</Modal>
|
||||
</div>
|
||||
</Router>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export default App;
|
25
client/src/Routes.js
Normal file
25
client/src/Routes.js
Normal file
|
@ -0,0 +1,25 @@
|
|||
import React from "react";
|
||||
import { Route, Switch } from "react-router-dom";
|
||||
|
||||
// FREE
|
||||
import HomePage from "./pages/HomePage";
|
||||
import MarketingPage from "./pages/MarketingPage";
|
||||
|
||||
class Routes extends React.Component {
|
||||
render() {
|
||||
return (
|
||||
<Switch>
|
||||
{/* FREE */}
|
||||
<Route exact path="/" component={HomePage} />
|
||||
<Route exact path="/marketing" component={MarketingPage} />
|
||||
<Route
|
||||
render={function() {
|
||||
return <h1>Not Found</h1>;
|
||||
}}
|
||||
/>
|
||||
</Switch>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export default Routes;
|
116
client/src/components/HomeNav.js
Normal file
116
client/src/components/HomeNav.js
Normal file
|
@ -0,0 +1,116 @@
|
|||
import {
|
||||
Navbar,
|
||||
NavbarNav,
|
||||
NavbarToggler,
|
||||
Collapse,
|
||||
NavItem,
|
||||
NavLink,
|
||||
Container
|
||||
} from "mdbreact";
|
||||
import { Link } from "react-scroll";
|
||||
import React from "react";
|
||||
|
||||
class HomeNav extends React.Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.state = { showmenu: true };
|
||||
this.state = {
|
||||
collapse: false
|
||||
};
|
||||
this.onClick = this.onClick.bind(this);
|
||||
this.handleNavbarClick = this.handleNavbarClick.bind(this);
|
||||
}
|
||||
|
||||
onClick() {
|
||||
this.setState({
|
||||
collapse: !this.state.collapse
|
||||
});
|
||||
}
|
||||
|
||||
handleNavbarClick() {
|
||||
this.setState({
|
||||
collapse: false
|
||||
});
|
||||
}
|
||||
|
||||
render() {
|
||||
return (
|
||||
<Navbar dark expand="md" fixed="top" id="mainNav" scrolling>
|
||||
<Container className="menuc" hidden={this.state.showmenu}>
|
||||
<Link
|
||||
activeClass="active"
|
||||
className="navbar-brand"
|
||||
to="home"
|
||||
href="/"
|
||||
spy={true}
|
||||
smooth={true}
|
||||
offset={0}
|
||||
duration={500}
|
||||
onSetActive={this.handleSetActive}>
|
||||
<img alt="" className="logo1" src="./img/logo.png" width="100%" />
|
||||
<img
|
||||
alt=""
|
||||
className="logo2"
|
||||
src="./img/logo54.png"
|
||||
width="100%"
|
||||
style={{ display: "none" }}
|
||||
/>
|
||||
</Link>
|
||||
|
||||
<NavbarToggler onClick={this.onClick} />
|
||||
<Collapse isOpen={this.state.collapse} navbar>
|
||||
<NavbarNav right>
|
||||
<NavItem>
|
||||
<Link
|
||||
activeClass="active"
|
||||
className="nav-link"
|
||||
to="services"
|
||||
spy={true}
|
||||
smooth={true}
|
||||
offset={0}
|
||||
duration={500}
|
||||
onSetActive={this.handleSetActive}>
|
||||
<span id="nav_lang1">Services</span>
|
||||
</Link>
|
||||
</NavItem>
|
||||
<NavItem>
|
||||
<Link
|
||||
activeClass="active"
|
||||
className="nav-link"
|
||||
to="about"
|
||||
spy={true}
|
||||
smooth={true}
|
||||
offset={0}
|
||||
duration={500}
|
||||
onSetActive={this.handleSetActive}>
|
||||
<span id="nav_lang2">About</span>
|
||||
</Link>
|
||||
</NavItem>
|
||||
<NavItem>
|
||||
<Link
|
||||
activeClass="active"
|
||||
className="nav-link"
|
||||
href="#testimonies"
|
||||
to="testimonies"
|
||||
spy={true}
|
||||
smooth={true}
|
||||
offset={0}
|
||||
duration={500}
|
||||
onSetActive={this.handleSetActive}>
|
||||
<span id="nav_lang3">Testimonies</span>
|
||||
</Link>
|
||||
</NavItem>
|
||||
<NavItem>
|
||||
<NavLink to="#!" onClick={this.props.toggle2}>
|
||||
<span id="nav_lang4">Downloads</span>
|
||||
</NavLink>
|
||||
</NavItem>
|
||||
</NavbarNav>
|
||||
</Collapse>
|
||||
</Container>
|
||||
</Navbar>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export default HomeNav;
|
|
@ -8,17 +8,13 @@ import {
|
|||
//import { Link } from "react-scroll";
|
||||
import React from "react";
|
||||
|
||||
/**
|
||||
* The header of the marketing page.
|
||||
*/
|
||||
class MarketingHeader extends React.Component {
|
||||
class MarketingNav extends React.Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.state = { showmenu: true };
|
||||
this.state = {
|
||||
collapse: false
|
||||
};
|
||||
|
||||
this.onClick = this.onClick.bind(this);
|
||||
this.handleNavbarClick = this.handleNavbarClick.bind(this);
|
||||
}
|
||||
|
@ -37,7 +33,6 @@ class MarketingHeader extends React.Component {
|
|||
|
||||
render() {
|
||||
return (
|
||||
<div>
|
||||
<Navbar
|
||||
dark
|
||||
expand="md"
|
||||
|
@ -63,9 +58,8 @@ class MarketingHeader extends React.Component {
|
|||
</Collapse>
|
||||
</Container>
|
||||
</Navbar>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export default MarketingHeader;
|
||||
export default MarketingNav;
|
|
@ -42,10 +42,10 @@
|
|||
strong.important {
|
||||
font-weight: 700 !important;
|
||||
}
|
||||
/*
|
||||
|
||||
.testimonialc {
|
||||
margin-bottom: 100px;
|
||||
}*/
|
||||
}
|
||||
|
||||
.carousel-item i {
|
||||
font-size: 80px;
|
||||
|
@ -77,7 +77,9 @@ strong.important {
|
|||
.testimonialc .controls-top .btn-floating {
|
||||
background: #4285f4;
|
||||
}
|
||||
|
||||
.testimonialc .carousel-indicators {
|
||||
margin-bottom: -5em;
|
||||
}
|
||||
.testimonialc .card {
|
||||
margin: 1px;
|
||||
}
|
||||
|
@ -91,26 +93,10 @@ strong.important {
|
|||
}
|
||||
}
|
||||
#testimonies {
|
||||
padding: 5rem 0 !important;
|
||||
padding: 14rem 0 !important;
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
.menuc {
|
||||
max-width: 90% !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 990px) {
|
||||
|
||||
.testimoniesBox {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.testimonialbox {
|
||||
margin-top: -20px;
|
||||
}
|
||||
.testimonialc .carousel-indicators {
|
||||
margin-bottom: -1em;
|
||||
}
|
||||
|
||||
}
|
14
client/src/index.js
Normal file
14
client/src/index.js
Normal file
|
@ -0,0 +1,14 @@
|
|||
import React from "react";
|
||||
import ReactDOM from "react-dom";
|
||||
import "font-awesome/css/font-awesome.min.css";
|
||||
import "bootstrap/dist/css/bootstrap.min.css";
|
||||
import "mdbreact/dist/css/mdb.css";
|
||||
import "./index.css";
|
||||
|
||||
import App from "./App";
|
||||
|
||||
import registerServiceWorker from "./registerServiceWorker";
|
||||
|
||||
ReactDOM.render(<App />, document.getElementById("root"));
|
||||
|
||||
registerServiceWorker();
|
7
client/src/pages/HomePage.css
Normal file
7
client/src/pages/HomePage.css
Normal file
|
@ -0,0 +1,7 @@
|
|||
#apppage .vmain {
|
||||
background-image: url("../static/img/header-bg.jpg");
|
||||
background-repeat: no-repeat;
|
||||
background-size: cover;
|
||||
background-position: center center;
|
||||
height: 100vh;
|
||||
}
|
612
client/src/pages/HomePage.js
Normal file
612
client/src/pages/HomePage.js
Normal file
|
@ -0,0 +1,612 @@
|
|||
import React from "react";
|
||||
import {
|
||||
Carousel,
|
||||
CarouselInner,
|
||||
CarouselItem,
|
||||
CarouselIndicators,
|
||||
CarouselIndicator,
|
||||
Mask,
|
||||
Row,
|
||||
Col,
|
||||
Button,
|
||||
View,
|
||||
Container
|
||||
} from "mdbreact";
|
||||
|
||||
import "./HomePage.css";
|
||||
|
||||
class HomePage extends React.Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.next = this.next.bind(this);
|
||||
this.prev = this.prev.bind(this);
|
||||
this.state = {
|
||||
activeItem: 1,
|
||||
maxLength: 6
|
||||
};
|
||||
}
|
||||
|
||||
next() {
|
||||
let nextItem = this.state.activeItem + 1;
|
||||
if (nextItem > this.state.maxLength) {
|
||||
this.setState({ activeItem: 1 });
|
||||
} else {
|
||||
this.setState({ activeItem: nextItem });
|
||||
}
|
||||
}
|
||||
|
||||
prev() {
|
||||
let prevItem = this.state.activeItem - 1;
|
||||
if (prevItem < 1) {
|
||||
this.setState({ activeItem: this.state.maxLength });
|
||||
} else {
|
||||
this.setState({ activeItem: prevItem });
|
||||
}
|
||||
}
|
||||
|
||||
goToIndex(item) {
|
||||
if (this.state.activeItem !== item) {
|
||||
this.setState({
|
||||
activeItem: item
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
render() {
|
||||
const { activeItem } = this.state;
|
||||
return (
|
||||
<span>
|
||||
<View className="vmain">
|
||||
<Mask className="d-flex justify-content-center align-items-center gradient">
|
||||
<Container className="px-md-3 px-sm-0">
|
||||
<Row>
|
||||
<Col lg="10" className="mx-auto white-text text-center">
|
||||
<h1 className="text-uppercase">
|
||||
<strong className="important">
|
||||
<span id="header_lang1">
|
||||
Accept any Digital Currency at Zero Cost
|
||||
</span>
|
||||
</strong>
|
||||
</h1>
|
||||
<hr className="hr-light my-4 w-75" />
|
||||
</Col>
|
||||
<Col lg="8" className="mx-auto white-text text-center">
|
||||
<p className="subtext-header mt-2 mb-4 text-faded">
|
||||
<span id="header_lang2">
|
||||
Cryptocurrencies bring Global Sales; Bitcoin Cash, bitUSD,
|
||||
bitEUR, bitRUB, bitXCD, bitSilver, Steem, Litecoin and
|
||||
more
|
||||
</span>
|
||||
</p>
|
||||
<Button
|
||||
href="#services"
|
||||
className="btn-lg btn-primary"
|
||||
rounded>
|
||||
<span id="header_lang3">Tell me more</span>
|
||||
</Button>
|
||||
</Col>
|
||||
</Row>
|
||||
</Container>
|
||||
</Mask>
|
||||
</View>
|
||||
|
||||
<section data-spy="scroll" data-target="#mainNav" id="services">
|
||||
<div className="containerfix">
|
||||
<div className="row">
|
||||
<div className="col-lg-12 text-center">
|
||||
<h2 className="section-heading">
|
||||
<span id="sr_lang1">
|
||||
100% FREE Crypto Point-Of-Sale Software for any Business
|
||||
</span>
|
||||
</h2>
|
||||
<hr className="my-4" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="containerfix">
|
||||
<div className="row">
|
||||
<div className="col-lg-3 col-md-6 text-center">
|
||||
<div className="service-box mt-5 mx-auto">
|
||||
<i className="fa fa-4x text-primary mb-3 sr-icons">
|
||||
<img alt="Retail" src="./img/4.png" />
|
||||
</i>
|
||||
<h3 className="mb-3">
|
||||
<span id="sr_lang2">Retail</span>
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="col-lg-3 col-md-6 text-center">
|
||||
<div className="service-box mt-5 mx-auto">
|
||||
<i className="fa fa-4x text-primary mb-3 sr-icons">
|
||||
<img alt="Cafe/Bars" src="./img/6.png" />
|
||||
</i>
|
||||
<h3 className="mb-3">
|
||||
<span id="sr_lang3">Cafe/Bars</span>
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="col-lg-3 col-md-6 text-center">
|
||||
<div className="service-box mt-5 mx-auto">
|
||||
<i className="fa fa-4x text-primary mb-3 sr-icons">
|
||||
<img alt="Restaurants" src="./img/3.png" />
|
||||
</i>
|
||||
<h3 className="mb-3">
|
||||
<span id="sr_lang4">Restaurants</span>
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="col-lg-3 col-md-6 text-center">
|
||||
<div className="service-box mt-5 mx-auto">
|
||||
<i className="fa fa-4x text-primary mb-3 sr-icons">
|
||||
<img alt="Gas Stations" src="./img/7.png" />
|
||||
</i>
|
||||
<h3 className="mb-3">
|
||||
<span id="sr_lang5">Gas Stations</span>
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="col-lg-3 col-md-6 text-center">
|
||||
<div className="service-box mt-5 mx-auto">
|
||||
<i className="fa fa-4x text-primary mb-3 sr-icons">
|
||||
<img alt="Bill-Pay Counters" src="./img/2.png" />
|
||||
</i>
|
||||
<h3 className="mb-3">
|
||||
<span id="sr_lang6">Bill-Pay Counters</span>
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="col-lg-3 col-md-6 text-center">
|
||||
<div className="service-box mt-5 mx-auto">
|
||||
<i className="fa fa-4x text-primary mb-3 sr-icons">
|
||||
<img alt="Grocery" src="./img/1.png" />
|
||||
</i>
|
||||
<h3 className="mb-3">
|
||||
<span id="sr_lang7">Grocery</span>
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="col-lg-3 col-md-6 text-center">
|
||||
<div className="service-box mt-5 mx-auto">
|
||||
<i className="fa fa-4x text-primary mb-3 sr-icons">
|
||||
<img alt="Delivery Drivers" src="./img/9.png" />
|
||||
</i>
|
||||
<h3 className="mb-3">
|
||||
<span id="sr_lang8">Delivery Drivers</span>
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="col-lg-3 col-md-6 text-center">
|
||||
<div className="service-box mt-5 mx-auto">
|
||||
<i className="fa fa-4x text-primary mb-3 sr-icons">
|
||||
<img alt="Phone Orders" src="./img/8.png" />
|
||||
</i>
|
||||
<h3 className="mb-3">
|
||||
<span id="sr_lang9">Phone Orders</span>
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section className="about bg-secondary" id="about">
|
||||
<div className="container">
|
||||
<div className="row align-items-center">
|
||||
<div className="col-lg-6 order-lg-2">
|
||||
<div className="p-5">
|
||||
<img alt="" className="img-fluid" src="./img/ab1.png" />
|
||||
</div>
|
||||
</div>
|
||||
<div className="col-lg-6 order-lg-1">
|
||||
<div className="p-5">
|
||||
<h2 className="about-text">
|
||||
<span>
|
||||
<span id="ab_lang1">
|
||||
Integrates seamlessly with Existing Systems
|
||||
</span>
|
||||
</span>
|
||||
</h2>
|
||||
<p className="about-text">
|
||||
<span>
|
||||
<span id="ab_lang2">
|
||||
PalmPay was built from the ground up to be Future-Proof.
|
||||
Business owners no longer need to stay savvy on the
|
||||
latest technologies. Blockchains and currencies come and
|
||||
go, but PalmPay supports them and offers them to your
|
||||
customers based upon their popularity, automatically.
|
||||
</span>
|
||||
</span>
|
||||
|
||||
<br />
|
||||
<span>
|
||||
<span id="ab_lang3">
|
||||
Zero cost. Zero setup fee. Zero transaction fee. Zero
|
||||
monthly fee. Your Customers pay the tiny 0.5%
|
||||
transaction fee to pay with their favorite digital
|
||||
currency.
|
||||
</span>
|
||||
</span>
|
||||
|
||||
<br />
|
||||
<span>
|
||||
<span id="ab_lang4">
|
||||
eReceipts, and advanced Export features enable
|
||||
simplified accounting and Tax reporting. Your Customers
|
||||
also receive a beautiful eReceipt directly to their
|
||||
smartphone after their payment.
|
||||
</span>
|
||||
</span>
|
||||
|
||||
<br />
|
||||
<span>
|
||||
<span id="ab_lang5">
|
||||
Faster and Safer than Cash. Customer transactions take 3
|
||||
seconds or less. Let’s see cash or card Customers get
|
||||
through that fast!
|
||||
</span>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="row align-items-center">
|
||||
<div className="col-lg-6">
|
||||
<div className="p-5">
|
||||
<img alt="" className="img-fluid" src="./img/ab2.png" />
|
||||
</div>
|
||||
</div>
|
||||
<div className="col-lg-6">
|
||||
<div className="p-5">
|
||||
<h2 className="about-text">
|
||||
<span>
|
||||
<span id="ab_lang6">
|
||||
Mobile Payments are quicker than ever. Process your
|
||||
Customer orders instantly
|
||||
</span>
|
||||
</span>
|
||||
</h2>
|
||||
<p className="about-text">
|
||||
<span>
|
||||
<span id="ab_lang7">
|
||||
Whether you are delivering packages requiring payment,
|
||||
helping hundreds of Customers to speed through the
|
||||
checkout line, or just serving up the bill in a
|
||||
high-paced restaurant, PalmPay handles them all
|
||||
instantly.
|
||||
</span>
|
||||
</span>
|
||||
|
||||
<br />
|
||||
<span>
|
||||
<span id="ab_lang8">
|
||||
No more credit card expenses. No more cash robberies.
|
||||
Maximum Security and Zero Risk with no chance of
|
||||
ID-Theft or Card Fraud. PalmPay uses the Bitshares
|
||||
blockchain to instantly secure any transaction amount
|
||||
and has done so for over 3 years now, recently exceeding
|
||||
3300 transactions per second.
|
||||
</span>
|
||||
</span>
|
||||
|
||||
<br />
|
||||
<span>
|
||||
<span id="ab_lang9">
|
||||
Hacking a blockchain is impossible since it uses
|
||||
Distributed Ledger Technology, instantly ensuring that
|
||||
each transaction is verified by hundreds of computers
|
||||
around the world.
|
||||
</span>
|
||||
</span>
|
||||
|
||||
<br />
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="row align-items-center">
|
||||
<div className="col-lg-6 order-lg-2">
|
||||
<div className="p-5">
|
||||
<img alt="" className="img-fluid" src="./img/ab3.png" />
|
||||
</div>
|
||||
</div>
|
||||
<div className="col-lg-6 order-lg-1">
|
||||
<div className="p-5">
|
||||
<h2 className="about-text">
|
||||
<span>
|
||||
<span id="ab_lang10">
|
||||
Cryptocurrency volatility is a thing of the past
|
||||
</span>
|
||||
</span>
|
||||
</h2>
|
||||
<p className="about-text">
|
||||
<span>
|
||||
<span id="ab_lang11">
|
||||
PalmPay instantly converts Crypto into your stable,
|
||||
local currency in digital form, such as bitEUR, bitUSD,
|
||||
bitJPY, bitKRW, bitRUB or even bitGold and bitSilver.
|
||||
</span>
|
||||
</span>
|
||||
|
||||
<br />
|
||||
<span>
|
||||
<span id="ab_lang12">
|
||||
These Smartcoins are closely pegged 1:1 to their
|
||||
underlying asset so that you never have to worry about
|
||||
paying your bills with Crypto.
|
||||
</span>
|
||||
</span>
|
||||
|
||||
<br />
|
||||
<span>
|
||||
<span id="ab_lang13">
|
||||
For example, the Canadian merchant who just received
|
||||
some volatile Dogecoin, can receive it as price-stable
|
||||
bitCAD. One currency is instantly morphed into another,
|
||||
of the Merchants choice. PalmPay handles all of this in
|
||||
the background, allowing the customer to pay with
|
||||
whatever Crypto they prefer.
|
||||
</span>
|
||||
</span>
|
||||
|
||||
<br />
|
||||
<span>
|
||||
<span id="ab_lang14">
|
||||
This stability is the foundation of the Blockchain My
|
||||
City (<a href="docs/Blockchain_My_City_BMC.pdf">BMC</a>)
|
||||
Initiative. PalmPay includes the ability to
|
||||
automatically pay every Ambassador and enrolled
|
||||
Government from the 0.5% that is collected from
|
||||
customers.
|
||||
</span>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="row align-items-center">
|
||||
<div className="col-lg-6">
|
||||
< |