---
# System prepended metadata

title: Nom - Name Registry DNA Payment Portal & Reusable UI Tech Stack
tags: [Technical Specification]

---

# Nom - Name Registry DNA Payment Portal & Reusable UI Tech Stack

###### tags: `Technical Specification`

## Centralized Payment Portal
### Payment Options
- Bank deposit
- Credit/Debit card
- Cryptocurrency (HOT, BTC, ETH etc)

### modules/libraries
**Front-End**
WebApp Framework: Vue + Nuxt
Webpage development

**API**

**Payment API: Stripe**
Payment management
Comes with a per card charge cost
Allows crypto payments

**Deployment**
Cloudflare or AWS EC2

### Private File System Structure for temporary Name Store
- We will be using a temporary File System hosted in Github for recording any purchase of Namespace, Local Names, and Global Names, until we are ready with storing data in Holochain

#### File System Structure
```
~/nom_registry
  ./witnesses
     ./witness_profile.json
  ./global_names
    ./gusername1.json
    ./gusername2.json
  ./namespaces
    ./app_namespace_index // uuid for namespace
      ./namespace_properties.json // namespace property
      ./namespace_marketing_info.json
      ./namespace_logo.png
      ./username // name type 1
        ./username1.json // local name 1
        ./username2.json // local name 2
        ./username3.json // local name 3
     ./other_name_type // name type 2
         ./name1.json
```

#### JSON Structures
```json
// namespace.json
{
    "originDna"?: String, // we could later ask for this during migration
    "globalNameRegOptIn": Boolean,
    "ttl": Number, // u8
    // "bindingPublicKey"?: String,
    "freeNameAllotment": Number, // u32
}

// namespace_properties.json
{
    "namespace": String,
    "displayName": String,
    "dnaVersions": Array<String>,
    "orgDetail": Organization,
    "nameTypes": Array<Array<Number> | String>, // Vec<u8> | String (uuid for nametypes?)
    "agentNameType": Number, // u8
    "maintainers": Array<String>, // What should be in here for now?
    "ownershipProof"?: String // Option<Signature>
}

// Organization
{
    "name": String,
    "email": String,
    "country": String,
    "province" String,
    "city": String,
    "contactNo": String
}

// namespace_marketing_info.json
{
    "logo": String, // base64 of logo?
    "appName": String,
    "appStatus": "Alpha" | "Beta" | "Released"
}

// nametype.json
{
    "path": String, // immutable 
    "namespace": String, // temporary uuid of the namespace?
    "validNameStructureRegex": String
    "displayName": String,
    "ttl": Number, // u8
    "purchasePrice": Number, // u32
    // "prevNameTypeEh"?: String,
}

// witness_profile.json
{}
```