Skip to content

Commit

Permalink
Implement Base & API Base & WebUI Base
Browse files Browse the repository at this point in the history
  • Loading branch information
Clint.Network committed Aug 19, 2019
1 parent 63d0355 commit 24cbe90
Show file tree
Hide file tree
Showing 16 changed files with 371 additions and 250 deletions.
15 changes: 10 additions & 5 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,17 +1,22 @@
[package]
name = "lucid"
description = "High performance and distributed KV ledger."
description = "A Fast, Secure and Distributed KV store with a HTTP API."
version = "0.1.0"
authors = ["Clint.Network <[email protected]>"]
edition = "2018"
keywords = ["kv", "distributed", "ledger", "kv-store", "key-value"]
keywords = ["kv", "distributed", "ledger", "kv-store", "key-value", "distributed key-value"]
repository = "https://github.com/clintnetwork/lucid"
license = "https://github.com/clintnetwork/lucid/blob/master/LICENSE.md"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[badges]
travis-ci = { repository = "clintnetwork/lucid", branch = "master" }

[dependencies]
clap = "*"
nickel = "*"
serde = "*"
serde_json = "*"
serde_json = "*"
rustflake = "*"

[dependencies.clap]
version = "*"
features = ["yaml"]
20 changes: 15 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,22 @@
# About Lucid

An High performance and distributed KV ledger. Written in Rust
An High performance and distributed KV store accessible through a HTTP API. Written in Rust. 🦀

[![Build Status](https://travis-ci.com/clintnetwork/lucid.svg?branch=developement)](https://travis-ci.com/clintnetwork/lucid)
[![Made with Rust](https://img.shields.io/badge/Made%20With-Rust-dea584)](https://www.rust-lang.org/)
[![Clint.Network](https://img.shields.io/badge/Powered%20by-Clint.Network-blue.svg)](https://twitter.com/clint_network)

## Introduction

Provide an high performance and a distributed key-value-store accessible via an REST API is the mission of Lucid.
Lucid is currently in an embryonic state but we wish to achieve a fast, secure and distributed key-value store accessible through a HTTP API, we also want to propose persistence, encryption, websocket streaming, replication and a lots of features.

## Some Use Cases

Lucid is currently in developement and we plan to implement some logics, like authentication, ACLs, encryption on the fly, and data streaming through API (websocket).
- Private Keys Storing (for a wallet by example)
- IoT: collect and save statistics data
- A distributed cache for an application
- Service Discovery
- Distributed Configuration

## Command Line Interface

Expand Down Expand Up @@ -40,10 +50,10 @@ SUBCOMMANDS:

## Web Interface (UI)

Lucid want to propose an humain interface to manage objects, clusters and configuration.
Lucid want to propose an web UI to manage data, issue tokens, organize nodes and configure instances.

## About the Author

Lucid is powered by [Clint.Network](https://twitter.com/clint_network) and published under the [MIT License](LICENSE.md).

If you want to make a little donation (or bigger), use this Bitcoin address: 3NhdjiGrpzH5geVrDHa173EuXxnAVhghtZ
If you want to make a little donation, use this Bitcoin address: 3NhdjiGrpzH5geVrDHa173EuXxnAVhghtZ or my [Patreon](https://www.patreon.com/clintnetwork).
1 change: 0 additions & 1 deletion _config.yml

This file was deleted.

Binary file added assets/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file added scripts/build.ps1
Empty file.
183 changes: 183 additions & 0 deletions src/cli.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,183 @@
name: Lucid
author: Written in Rust by Clint.Network (twitter.com/clint_network)
subcommands:
- cli:
about: Spawn to the command line interface
- init:
about: Initialize the Lucid cluster and generate configuration file
- members:
about: Manage members of the cluster
- server:
about: Run a new Lucid server instance
- settings:
about: Manage Lucid configuration file
- store:
about: Play with the KV store (get/set)
- tokens:
about: Manage JWT Tokens (issue, revoke etc.)
- server:
about: Run a new Lucid server instance
args:
- help:
help: Prints help information
short: h
long: help
# index: 1
# required: true
takes_value: false
- scopt:
short: B
multiple: true
help: example subcommand option
takes_value: true
- scpos1:
help: example subcommand positional
index: 1
args:
- help:
help: Prints help information
short: h
long: help
takes_value: false
- version:
help: Prints version information
short: v
long: version
takes_value: false


# - pos:
# help: example positional argument from yaml
# index: 1
# # A list of possible values can be defined as a list
# possible_values:
# - fast
# - slow
# - flag:
# help: demo flag argument
# short: F
# multiple: true
# global: true
# # Conflicts, mutual overrides, and requirements can all be defined as a
# # list, where the key is the name of the other argument
# conflicts_with:
# - opt
# requires:
# - pos
# - mode:
# long: mode
# help: shows an option with specific values
# # possible_values can also be defined in this list format
# possible_values: [ vi, emacs ]
# takes_value: true
# - mvals:
# long: mult-vals
# help: demos an option which has two named values
# # value names can be described in a list, where the help will be shown
# # --mult-vals <one> <two>
# value_names:
# - one
# - two
# - minvals:
# long: min-vals
# multiple: true
# help: you must supply at least two values to satisfy me
# min_values: 2
# - maxvals:
# long: max-vals
# multiple: true
# help: you can only supply a max of 3 values for me!
# max_values: 3

# AppSettings can be defined as a list and are **not** ascii case sensitive
# settings:
# - ArgRequiredElseHelp

# # All Args must be defined in the 'args:' list where the name of the arg, is the
# # key to a Hash object
# args:
# # The name of this argument, is 'opt' which will be used to access the value
# # later in your Rust code
# - opt:
# help: example option argument from yaml
# short: o
# long: option
# multiple: true
# takes_value: true
# - pos:
# help: example positional argument from yaml
# index: 1
# # A list of possible values can be defined as a list
# possible_values:
# - fast
# - slow
# - flag:
# help: demo flag argument
# short: F
# multiple: true
# global: true
# # Conflicts, mutual overrides, and requirements can all be defined as a
# # list, where the key is the name of the other argument
# conflicts_with:
# - opt
# requires:
# - pos
# - mode:
# long: mode
# help: shows an option with specific values
# # possible_values can also be defined in this list format
# possible_values: [ vi, emacs ]
# takes_value: true
# - mvals:
# long: mult-vals
# help: demos an option which has two named values
# # value names can be described in a list, where the help will be shown
# # --mult-vals <one> <two>
# value_names:
# - one
# - two
# - minvals:
# long: min-vals
# multiple: true
# help: you must supply at least two values to satisfy me
# min_values: 2
# - maxvals:
# long: max-vals
# multiple: true
# help: you can only supply a max of 3 values for me!
# max_values: 3

# # All subcommands must be listed in the 'subcommand:' object, where the key to
# # the list is the name of the subcommand, and all settings for that command are
# # are part of a Hash object
# subcommands:
# # The name of this subcommand will be 'subcmd' which can be accessed in your
# # Rust code later
# - subcmd:
# about: demos subcommands from yaml
# version: "0.1"
# author: Kevin K. <[email protected]>
# # Subcommand args are exactly like App args
# args:
# - scopt:
# short: B
# multiple: true
# help: example subcommand option
# takes_value: true
# - scpos1:
# help: example subcommand positional
# index: 1

# # ArgGroups are supported as well, and must be sepcified in the 'groups:'
# # object of this file
# groups:
# # the name of the ArgGoup is specified here
# - min-max-vals:
# # All args and groups that are a part of this group are set here
# args:
# - minvals
# - maxvals
# # setting conflicts is done the same manner as setting 'args:'
# #
# # to make this group required, you could set 'required: true' but for
# # this example we won't do that.
11 changes: 2 additions & 9 deletions src/crossplatform.rs
Original file line number Diff line number Diff line change
@@ -1,16 +1,9 @@
#[cfg(target_os = "linux")]
fn get_binary() -> &'static str {
"lucid"
"./lucid"
}

// And this function only gets compiled if the target OS is *not* linux
#[cfg(not(target_os = "linux"))]
fn get_binary() -> &'static str {
"lucid.exe"
}

// if cfg!(target_os = "linux") {
// println!("Yes. It's definitely linux!");
// } else {
// println!("Yes. It's definitely *not* linux!");
// }
}
Loading

0 comments on commit 24cbe90

Please sign in to comment.