open-index/open-npm huggingface dataset:
npm package: @sablekunal/unlockat
Description: Secure, Time-Gated File Encryption system with a Zero-Knowledge Time Oracle.
Author: Kunal
Latest version: 1.0.0

# 🔓 UnlockAt — Secure, Time-Gated Encryption

> **"Wait for it."** UnlockAt is a premium, zero-knowledge file encryption system that allows you to lock files behind a kryptographic time-gate. Encrypt locally, store the key fragment in a decentralized "Time Oracle," and unlock it only when the designated time arrives.

![Logo](https://img.shields.io/badge/Security-Hardened-blueviolet) ![Audit](https://img.shields.io/badge/Audit-Passed-success) ![License](https://img.shields.io/badge/License-MIT-blue)

---

## 🛡️ Security Architecture

UnlockAt is built on a **Zero-Knowledge Architecture**. Neither the server nor any third party ever sees your unencrypted file or your master key.

-   **Client-Side Split-Key**: Your master key is split into `Fragment A` (stored in your `.unlockat` bundle) and `Fragment B` (sent to the Time Oracle).
-   **AES-256-GCM**: Industry-standard authenticated encryption ensures your data cannot be read OR tampered with.
-   **NTP-Synced Time Oracle**: The server enforces the unlock time using its internal clock, making local system time manipulation impossible.

### 🧪 Security Audit Results (Passed 2026-02-28)

| Scenario | Objective | Result |
| :--- | :--- | :--- |
| **Time-Travel Attack** | Attempt unlock before target date. | **✅ BLOCKED** |
| **API Leakage** | Direct API request for Fragment B. | **✅ BLOCKED** |
| **Bit-Flipping** | Tampering with file bytes to bypass checks. | **✅ REJECTED** |
| **Zero-Knowledge** | Inspect server logs for sensitive data. | **✅ PASS** |

---

## 🚀 Getting Started

### Installation
```bash
npm install
npm link
```

### 💻 CLI Usage
**Lock a file until tomorrow:**
```bash
unlockat lock secret.pdf "2026-03-01 12:00:00"
```

**Open a locked file:**
```bash
unlockat open secret.pdf.unlockat
```

### 🌐 Web Dashboard
Run the development server to access the premium UI:
```bash
npm run dev
```
Navigate to `http://localhost:5173`. Toggle to **"Open File"** to decrypt using the browser's hardware-accelerated crypto.

---

## 🛠️ Tech Stack
-   **Frontend**: React, Tailwind CSS, Lucide Icons
-   **Backend**: Node.js, Vercel Functions, Vercel KV
-   **Crypto**: Web Crypto API (Browser), `node:crypto` (CLI)

---

## 📜 Authors
Developed with passion for secure decentralized tools.

*UnlockAt — Because some things are better left for later.*
npm package: @sablepay/angular-sablepay-js
Description: SablePay Angular SDK for crypto payment integration with QR codes, polling, and pre-built UI components
Author: SablePay
Latest version: 1.2.2

# @sablepay/angular-sablepay-js

Minimal integration guide for using the SablePay Angular SDK in another application.

## Compatibility

- Angular 13+

## 1. Install

```bash
npm install @sablepay/angular-sablepay-js
```

## 2. Initialize once (app startup)

```ts
import { SablePay } from '@sablepay/angular-sablepay-js';

SablePay.initialize({
  apiKey: 'sable_sk_sand_...',
  merchantId: '00000000-0000-0000-0000-000000000000',
  enableLogging: false,
});
```

## 3. Create payment + show QR + poll status

```ts
import { Component } from '@angular/core';
import { CommonModule } from '@angular/common';
import {
  SablePay,
  QrCodeGenerator,
  PaymentPoller,
  isCompleted,
  isExpired,
} from '@sablepay/angular-sablepay-js';

@Component({
  selector: 'app-checkout',
  standalone: true,
  imports: [CommonModule],
  template: `
    <button (click)="pay()" [disabled]="loading">Pay $10.50</button>
    <img *ngIf="qrUrl" [src]="qrUrl" alt="Scan to pay" width="300" height="300" />
    <p *ngIf="status">Status: {{ status }}</p>
  `,
})
export class CheckoutComponent {
  loading = false;
  qrUrl = '';
  status = '';

  async pay() {
    this.loading = true;

    const sdk = SablePay.getInstance();
    const payment = await sdk.createPayment({ amount: 10.5 });

    const qr = new QrCodeGenerator();
    this.qrUrl = (await qr.generatePaymentQr(payment)) || '';

    const poller = new PaymentPoller((id) => sdk.getPaymentStatus(id));
    poller.startPolling(payment.paymentId, (result) => {
      if (!result.success) {
        this.status = 'FAILED';
        this.loading = false;
        return;
      }

      this.status = result.data.status;
      if (isCompleted(result.data.status) || isExpired(result.data.status)) {
        this.loading = false;
        poller.stopPolling();
      }
    });
  }
}
```

## Optional: Environment values

```ts
export const environment = {
  production: false,
  sablepayApiKey: 'sable_sk_sand_...',
  sablepayMerchantId: '00000000-0000-0000-0000-000000000000',
};
```

## License

MIT
npm package: @sables/boilerplate
Description: A collection of example Sables apps prepared as boilerplates.
Author: Morris Allison III
Latest version: 0.2.8

# `@sables/boilerplate`

> A collection of example Sables apps prepared as boilerplates.

This package is consumed by Sables CLI.
Please view [the CLI documentation](https://sables.dev/docs/api#cli) for more information.

## Install

```sh
npm install --save-dev @sables/boilerplate
```
npm package: @sables/core
Description: The foundation of Sables, focusing on Redux-based state management.
Author: Morris Allison III
Latest version: 0.15.2

# `@sables/core`

> The foundation of Sables, focusing on Redux-based state management.

Please view [the Core API documentation](https://sables.dev/docs/api#core) for more information.

## Install

```sh
npm install @sables/core
```
npm package: @sables/framework
Description: Application-first Web Framework.
Author: Morris Allison III
Latest version: 0.15.1

<p align="center">
<a href="https://sables.dev">
<img alt="Sables Logo" src="https://user-images.githubusercontent.com/3189455/209457888-b1c8cc89-39ed-40a1-9b5a-ed0fb29a0d30.svg" width="300">
</a>
</p>
<h1 align="center">Sables</h1>
<p align="center">Application-first Web Framework</p>
<br />
<p align="center">
<a href="https://www.npmjs.com/package/@sables/framework">
<img alt="npm Version" src="https://img.shields.io/npm/v/@sables/framework.svg?style=flat-square">
</a>
<a href="https://github.com/sables-app/sables/blob/main/LICENSE">
<img alt="MIT License" src="https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square">
</a>
<a href="https://sables.dev">
<img alt="Website: sables.dev" src="https://img.shields.io/static/v1?label=website&message=sables.dev&color=813973&style=flat-square">
</a>
</p>

### What is Sables?

Sables is an application-first Web framework focused on distributed routing logic, reactive programming, and serverless solutions. The framework is comprised of several packages built upon established technologies, making integration more cohesive.

#### Key features

- Distributed routing logic
- Route transitions with middleware and listeners
- Just-in-Time Redux slice insertion
- Side effect encapsulation via observers
- Server-side rendering and routing solutions; serverless compatible
- Application hydration with resume
- Code splitting, module lazy loading, and module preloading
- Strictly typed with template literal types and generics
- Simple and powerful interfaces that're easy to learn and master
- Project structure agnostic

### Documentation

- [Getting Started guide](https://sables.dev/docs/getting-started)
- [API Reference](https://sables.dev/docs/api)

### Versioning

Sables adheres to [Semantic Versioning 2.0.0](https://semver.org/spec/v2.0.0.html).

### License

Copyright &copy; 2022 [Morris Allison III](http://morris.xyz).
<br>Released under the [MIT license][license].

[license]: https://github.com/sables-app/sables/blob/main/LICENSE
[npm]: https://www.npmjs.com/package/@sables/framework
npm package: @sables/router
Description: A Redux-based routing library with distributed routing logic.
Author: Morris Allison III
Latest version: 0.15.1

# `@sables/router`

> A Redux-based routing library with distributed routing logic.

Building upon [Redux First History](https://github.com/salvoravida/redux-first-history),
Sables Router adds support for routes and asynchronous route transitions.

The library is designed to be integrated into any Redux project.
As a result, it can be used without the rest of the Sables framework.

Please view [the Sables Router documentation](https://sables.dev/docs/api#router) for more information.

## Install

```sh
npm install @sables/router
```
npm package: @sables/server
Description: Composable handlers and middleware for server-side rendering and routing.
Author: Morris Allison III
Latest version: 0.2.17

# `@sables/server`

> Composable handlers and middleware for server-side rendering and routing.

Please view [the Server documentation](https://sables.dev/docs/api#server) for more information.

## Install

```sh
npm install @sables/server
```
npm package: @sables/ssr
Description: Client-side integrations for server-side rendering and routing.
Author: Morris Allison III
Latest version: 0.1.16

# `@sables/ssr`

> Client-side integrations for server-side rendering and routing.

Please view [the SSR documentation](https://sables.dev/docs/api#ssr) for more information.

## Install

```sh
npm install @sables/ssr
```
npm package: @sables/vite-plugin-import-tags
Description: Tags dynamic imports for server-side rendered module preload links.
Author: Morris Allison III
Latest version: 0.1.0

# `@sables/vite-plugin-import-tags`

> Tags dynamic imports for server-side rendered module preload links.

Tags dynamic imports, and generates a manifest mapping them to source files. The manifest can then be used for preloading chunks for server-side rendering. This functionality is similar to the [Loadable Components](https://loadable-components.com/) Babel Plugin.

The tag used on the dynamic imports is a call to a noop function. A noop function is used to prevent optimizers from removing the tag, as is often the case with comments and string directives.

This plugin is used by the Sables CLI during its `build` command.
Please view [the CLI documentation](https://sables.dev/docs/api#cli) for more information.

### Todo

- [ ] Update pattern to _not_ tag imports in comments.
  - It doesn't break anything, and comments are typically removed from bundles anyway, so this is very low priority.