diff --git a/client/build b/client/build
new file mode 100644
index 0000000..b33aacc
--- /dev/null
+++ b/client/build
@@ -0,0 +1,6 @@
+#!/bin/python3
+
+import argparse as argp
+
+if __name__ == "__main__":
+ parser = argp.asdf()
\ No newline at end of file
diff --git a/client/build.sh b/client/build.sh
new file mode 100644
index 0000000..d87b3d4
--- /dev/null
+++ b/client/build.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+build_dir="css"
+sass_dir="sass"
+
+if [ ! -d $build_dir ]; then
+ mkdir -p $build_dir
+fi
+
+login="login"
+
+build() {
+ echo Building $1 css in $build_dir/$1.css
+ sass "$sass_dir/$1.scss" "$build_dir/$1.css"
+}
+
+while getopts "" opt; do
+ case $opt in
+
+ esac
+done
+build login
\ No newline at end of file
diff --git a/client/index.html b/client/index.html
new file mode 100644
index 0000000..3d0012b
--- /dev/null
+++ b/client/index.html
@@ -0,0 +1,15 @@
+
+
+
+
+ Freechat
+
+
+
+
+ Hello World!
+ We are using node ,
+ Chrome ,
+ and Electron .
+
+
\ No newline at end of file
diff --git a/client/init_user.js b/client/init_user.js
new file mode 100644
index 0000000..6d90808
--- /dev/null
+++ b/client/init_user.js
@@ -0,0 +1,7 @@
+function submit_creds() {
+ // submit form data to the requested domain
+}
+
+function auth_lookup() {
+ // lookup for user credentials file somewhere
+}
\ No newline at end of file
diff --git a/client/main.js b/client/main.js
new file mode 100644
index 0000000..aa141cd
--- /dev/null
+++ b/client/main.js
@@ -0,0 +1,37 @@
+const {app, BrowserWindow} = require('electron');
+
+// this is here to keep the window reference alive
+let win;
+
+function create_window() {
+ win = new BrowserWindow({
+ width: 800,
+ height: 600,
+ webPreferences: {
+ nodeIntegration: true
+ }
+ })
+
+ // load the main content
+ win.loadFile('index.html');
+
+ win.on('closed', () => {
+ win = null
+ })
+
+}
+app.on('ready', create_window)
+
+
+// if the window is closed we dereference he object and thus its gc'd
+// Finally load the window
+app.on('window-all-closed', () => {
+ if(process.platform !== 'darwin') {
+ app.quit()
+ }
+})
+app.on('activate', () => {
+ if(win === null) {
+ create_window()
+ }
+})
\ No newline at end of file
diff --git a/client/package-lock.json b/client/package-lock.json
index bc2a929..b353917 100644
--- a/client/package-lock.json
+++ b/client/package-lock.json
@@ -41,6 +41,20 @@
"integrity": "sha512-JNbGaHFCLwgHn/iCckiGSOZ1XYHsKFwREtzPwSGCVld1SGhOlmZw2D4ZI94HQCrBHbADzW9m4LER/8olJTRGHA==",
"dev": true
},
+ "anymatch": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
+ "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
+ "requires": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ }
+ },
+ "binary-extensions": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz",
+ "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow=="
+ },
"boolean": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/boolean/-/boolean-2.0.2.tgz",
@@ -48,6 +62,14 @@
"dev": true,
"optional": true
},
+ "braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "requires": {
+ "fill-range": "^7.0.1"
+ }
+ },
"buffer-from": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
@@ -86,6 +108,21 @@
}
}
},
+ "chokidar": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.2.3.tgz",
+ "integrity": "sha512-GtrxGuRf6bzHQmXWRepvsGnXpkQkVU+D2/9a7dAe4a7v1NhrfZOZ2oKf76M3nOs46fFYL8D+Q8JYA4GYeJ8Cjw==",
+ "requires": {
+ "anymatch": "~3.1.1",
+ "braces": "~3.0.2",
+ "fsevents": "~2.1.1",
+ "glob-parent": "~5.1.0",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.2.0"
+ }
+ },
"clone-response": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
@@ -263,6 +300,14 @@
"pend": "~1.2.0"
}
},
+ "fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "requires": {
+ "to-regex-range": "^5.0.1"
+ }
+ },
"fs-extra": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
@@ -274,6 +319,12 @@
"universalify": "^0.1.0"
}
},
+ "fsevents": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.1.tgz",
+ "integrity": "sha512-4FRPXWETxtigtJW/gxzEDsX1LVbPAM93VleB83kZB+ellqbHMkyt2aJfuzNLRvFPnGi6bcE5SvfxgbXPeKteJw==",
+ "optional": true
+ },
"function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
@@ -290,6 +341,14 @@
"pump": "^3.0.0"
}
},
+ "glob-parent": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz",
+ "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==",
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ },
"global-agent": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/global-agent/-/global-agent-2.1.5.tgz",
@@ -375,6 +434,32 @@
"dev": true,
"optional": true
},
+ "is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "requires": {
+ "binary-extensions": "^2.0.0"
+ }
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
+ },
+ "is-glob": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+ "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
+ },
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
@@ -462,6 +547,11 @@
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
+ "normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
+ },
"normalize-url": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz",
@@ -507,6 +597,11 @@
"integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
"dev": true
},
+ "picomatch": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.0.7.tgz",
+ "integrity": "sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA=="
+ },
"pify": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
@@ -558,6 +653,14 @@
"util-deprecate": "~1.0.1"
}
},
+ "readdirp": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz",
+ "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==",
+ "requires": {
+ "picomatch": "^2.0.4"
+ }
+ },
"responselike": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
@@ -597,6 +700,14 @@
"truncate-utf8-bytes": "^1.0.0"
}
},
+ "sass": {
+ "version": "1.23.1",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.23.1.tgz",
+ "integrity": "sha512-zQzJ3UETUWOMd/pJJGH/zvRsBVO97m11RcpfUhcQUHEXf0yHUBgOIE/Nw8aK0m1XyVJPeq228iIK7gVxsJ/Puw==",
+ "requires": {
+ "chokidar": ">=2.0.0 <4.0.0"
+ }
+ },
"semver": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
@@ -652,6 +763,14 @@
"integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==",
"dev": true
},
+ "to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "requires": {
+ "is-number": "^7.0.0"
+ }
+ },
"truncate-utf8-bytes": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz",
diff --git a/client/package.json b/client/package.json
index 4f586c3..808d507 100644
--- a/client/package.json
+++ b/client/package.json
@@ -4,11 +4,16 @@
"description": "Desktop application for Freechat's decentralized communications platform.",
"main": "index.js",
"scripts": {
+ "start": "electron .",
+ "build": "./build.sh",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
"electron": "^7.0.0"
+ },
+ "dependencies": {
+ "sass": "^1.23.1"
}
}