Skip to content

ali-master/keyfleur

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

8 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

KeyFleur Logo

KeyFleur

Poetic API Key Generation for Modern Developers

npm version TypeScript Zero Dependencies License: MIT Bundle Size

generateKeyFleur({ mode: "celestial", theme: "sigil" })
// โ†’ "Nebula-847-Galaxy" โœจ

๐Ÿ“– Documentation โ€ข ๐ŸŽฎ Try Online โ€ข ๐Ÿ™ GitHub Issues


Why KeyFleur?

Stop generating API keys that look like someone smashed their keyboard. Create beautiful, human-readable identifiers that your team will actually remember.

๐Ÿ˜ด Traditional Keys

kJ8#mP2qR9$vX7nL4wB6
aNm9Kp2QrX5vB8wL4jR7
7mK3$pQ9rN2xV8wL4jB6

โœจ KeyFleur Keys

Luna-Eclipse-Nocturnal
Crystal-459-Amethyst
Sage-7f2a

Features

๐ŸŽจ Beautiful ๐Ÿ”ง Functional ๐Ÿš€ Developer Experience
9 Generation Modes Zero Dependencies Full TypeScript Support
13 Themed Collections URL-Safe Output Comprehensive JSDoc
Human-Readable Keys Pattern Validation Modern ESM/CJS Support

๐ŸŒˆ Generation Modes

Choose from 9 different key generation patterns, each with its own aesthetic and use case.

๐ŸŽญ Thematic Collections

From celestial space themes to steampunk mechanical vibes - 13 curated word collections.

๐Ÿ›ก๏ธ Production Ready

Zero dependencies, fully typed, tested, and ready for production use.


Quick Start

๐Ÿ“ฆ Installation
# npm
npm install @usex/key-fleur

# yarn
yarn add @usex/key-fleur

# pnpm
pnpm add @usex/key-fleur

# bun
bun add @usex/key-fleur

Basic Usage

import { generateKeyFleur } from '@usex/key-fleur';

// One-liner for a beautiful key
const key = generateKeyFleur();
console.log(key); // "Nyrae-Soliv-Ethae"

Configuration

// Customize your keys
const apiKey = generateKeyFleur({ 
  mode: 'sigil',      // Key pattern
  theme: 'celestial'  // Word theme
});
// โ†’ "Nebula-742-Comet"

// Generate multiple keys
const sessionKeys = generateKeyFleur({ 
  count: 5, 
  theme: 'oceanic' 
});
// โ†’ ["Wave-Coral-Deep", "Tide-Gull-Salt", ...]

Validation

import { isValidKeyFleur } from '@usex/key-fleur';

const result = isValidKeyFleur("Crystal-459-Gem");
// โ†’ { valid: true, mode: "sigil", parts: ["Crystal", "459", "Gem"] }

๐ŸŽจ Generation Modes

๐ŸŒธ haiku - Traditional 5-7-5 syllable poetry
generateKeyFleur({ mode: 'haiku', theme: 'nocturnal' })
// โ†’ "Luna-Eclipse-Void"

Perfect for: API keys, memorable identifiers

๐Ÿ”ธ sigil - Word-number-word format
generateKeyFleur({ mode: 'sigil', theme: 'crystalline' })
// โ†’ "Crystal-459-Gem"

Perfect for: Session tokens, transaction IDs

๐ŸŒฑ seed - Compact word + hex
generateKeyFleur({ mode: 'seed', theme: 'forest' })
// โ†’ "Moss-4f2a"

Perfect for: Short codes, references

๐Ÿชž lace - Palindromic patterns
generateKeyFleur({ mode: 'lace', theme: 'oceanic' })
// โ†’ "wavefa-afevaw"

Perfect for: Artistic applications, unique IDs

๐ŸŽญ All 9 Modes
Mode Example Best For
haiku Luna-Eclipse-Void API keys, memorable IDs
sigil Crystal-459-Gem Session tokens, transaction IDs
seed Moss-4f2a Short codes, references
lace wavefa-afevaw Artistic apps, unique IDs
sonnet Rosefa-Lilyli User handles, project names
rune Oracle-Blade_dawn Timestamped keys
mantra Sand-Sand-Dune Meditation apps, repeated actions
mirrora af-fa Minimal IDs, simple tokens
quartz Gear45.45raeG Complex keys, high entropy

๐ŸŽญ Thematic Collections

13 carefully curated word collections to match your application's aesthetic

๐ŸŒŒ celestial

nova, galaxy, nebula
eclipse, stellar, cosmos

๐ŸŒŠ oceanic

wave, coral, tide
nautilus, reef, pearl

๐ŸŒฒ forest

moss, grove, cedar
glade, fern, birch

๐Ÿ”ฎ crystalline

quartz, prism, facet
amethyst, opal, gem

๐Ÿฆ‡ nocturnal

luna, eclipse, shadow
twilight, void, silence

โ˜€๏ธ sunny

sol, gleam, radiant
aurora, shine, gold

๐ŸŒธ floreal

rose, bloom, petal
garden, lily, orchid

โš™๏ธ steampunk

gear, steam, valve
chronometer, brass, cog

๐Ÿ‰ mythic

oracle, phoenix, wyrm
grimoire, titan, rune

๐Ÿœ๏ธ desert

dune, mirage, ember
sirocco, ash, mesa

๐Ÿ“š library

scroll, codex, quill
archive, tome, script

๐Ÿ•ณ๏ธ decay

rust, fracture, relic
erosion, wear, time
// Mix and match themes with any mode
generateKeyFleur({ theme: 'celestial', mode: 'haiku' })
// โ†’ "Nova-Galaxy-Nebula"

generateKeyFleur({ theme: 'steampunk', mode: 'sigil' })  
// โ†’ "Gear-847-Steam"

API Reference

generateKeyFleur(options?)

Primary interface for generating KeyFleur keys.

generateKeyFleur(options?: {
  mode?: ModeKey;     // Generation mode (default: "haiku")
  theme?: ThemeKey;   // Theme collection (default: "haiku") 
  count?: number;     // Number of keys (default: 1, max: 100)
}): string | string[]

Examples:

generateKeyFleur();                              // Single haiku key
generateKeyFleur({ mode: 'sigil' });            // Single sigil key
generateKeyFleur({ theme: 'oceanic' });         // Ocean-themed haiku
generateKeyFleur({ count: 10 });                // Array of 10 keys
generateKeyFleur({ 
  mode: 'quartz', 
  theme: 'crystalline',
  count: 3 
});                                              // 3 crystal quartz keys

isValidKeyFleur(key, mode?)

Validates KeyFleur key patterns.

isValidKeyFleur(
  key: string,
  mode?: ModeKey
): {
  valid: boolean;
  mode?: ModeKey;
  reason?: string;
  parts?: string[];
}

Examples:

isValidKeyFleur("Luna-Eclipse-Void");
// { valid: true, mode: "haiku", parts: ["Luna", "Eclipse", "Void"] }

isValidKeyFleur("Crystal-459-Gem", "sigil");
// { valid: true, mode: "sigil", parts: ["Crystal", "459", "Gem"] }

isValidKeyFleur("invalid-key");
// { valid: false, reason: "Key does not match any known KeyFleur pattern" }

Legacy API

import { poeticKey } from '@usex/key-fleur';

// Original simple interface (still supported)
poeticKey(mode?: ModeKey, theme?: ThemeKey): string

Use Cases

๐Ÿ” Security & Authentication

  • API keys that humans can actually read and remember
  • Session tokens with aesthetic appeal
  • Temporary access codes and passphrases
  • OAuth state parameters
  • CSRF tokens

๐ŸŽฎ Gaming & Creative

  • Game save IDs and world seeds
  • Character names and guild identifiers
  • Creative project codenames
  • Art piece references

๐Ÿ“Š Business & Development

  • Document and content identifiers
  • Database record references
  • Test data generation
  • Demo and placeholder content
  • Customer reference numbers

๐Ÿ’ผ Why Choose KeyFleur?

Traditional Random Keys:

kJ8#mP2qR9$vX7nL4wB6
aNm9Kp2QrX5vB8wL4jR7

KeyFleur Keys:

Luna-Eclipse-Nocturnal
Crystal-459-Amethyst

โœ… Human-readable - Easy to communicate verbally
โœ… Memorable - Natural language patterns stick in memory
โœ… Beautiful - Aesthetically pleasing in UIs and logs
โœ… Unique - Collision-resistant across themes and modes
โœ… Functional - URL-safe, database-friendly, proper entropy

Advanced Usage & Customization

Batch Generation

import { generateKeyFleur, type ThemeKey, type ModeKey } from '@usex/key-fleur';

// Generate API keys for different environments
const keys = {
  development: generateKeyFleur({ theme: 'forest', count: 3 }),
  staging: generateKeyFleur({ theme: 'crystalline', count: 3 }),
  production: generateKeyFleur({ theme: 'celestial', count: 3 })
};

// Generate user session tokens
const sessionTokens = generateKeyFleur({ 
  mode: 'seed',
  theme: 'nocturnal',
  count: 50 
}) as string[];

Custom Validation

import { isValidKeyFleur } from '@usex/key-fleur';

function validateApiKey(key: string, expectedFormat: 'sigil' | 'seed') {
  const result = isValidKeyFleur(key, expectedFormat);
  
  if (!result.valid) {
    throw new Error(`Invalid API key format: ${result.reason}`);
  }
  
  return result;
}

// Use in your application
try {
  const validation = validateApiKey("Crystal-459-Gem", "sigil");
  console.log(`Valid ${validation.mode} key with parts:`, validation.parts);
} catch (error) {
  console.error(error.message);
}

Extending KeyFleur

import { THEMES, MODES, type ThemeKey } from '@usex/key-fleur';

// Add custom themes
const customThemes = {
  ...THEMES,
  cyberpunk: ['neon', 'grid', 'cyber', 'matrix', 'pulse', 'neural']
} as const;

// Create custom generator
function customKeyFleur(theme: keyof typeof customThemes = 'haiku') {
  const words = customThemes[theme];
  const selected = words[Math.floor(Math.random() * words.length)];
  return `${selected}-${Date.now().toString(36)}`;
}

Technical Details

Architecture

KeyFleur is built with a modular architecture:

  • key-types.ts - TypeScript type definitions
  • theme-data.ts - Curated word collections (13 themes ร— ~30 words each)
  • string-utils.ts - Core utilities (syllable counting, random selection)
  • generation-modes.ts - 9 different key generation algorithms
  • index.ts - Main API with validation and error handling

Algorithms

  • Syllable Estimation - Vowel-counting heuristics for haiku mode
  • Pattern Generation - Deterministic transformations (reversals, mirroring)
  • Random Selection - Cryptographically adequate randomness via Math.random()
  • Validation - Regex-based pattern matching for all modes

Security Considerations

  • โš ๏ธ Not cryptographically secure - Uses Math.random() for generation
  • โœ… Adequate entropy - Large combination space across themes/modes
  • โœ… URL-safe - No special characters that break URLs or JSON
  • โœ… Collision-resistant - Very low probability of duplicates in practice

For cryptographic security, combine with additional entropy sources or use KeyFleur for non-security-critical identifiers.

Contributing

We welcome contributions! Here's how to get started:

Development Setup

git clone https://github.com/ali-master/key-fleur.git
cd key-fleur
npm install
npm run build
npm test

Adding New Themes

  1. Add your theme to src/theme-data.ts
  2. Update the ThemeKey type in src/key-types.ts
  3. Add tests and documentation

Adding New Modes

  1. Create your mode function in src/generation-modes.ts
  2. Add it to the MODES export
  3. Update the ModeKey type in src/key-types.ts
  4. Add validation pattern to isValidKeyFleur

License

MIT ยฉ Ali Torki


Built with โค๏ธ by Ali Torki, developers who believe code can be beautiful

โญ Star us on GitHub โ€ข ๐Ÿฆ Follow on Linkedin

About

Generate beautiful, memorable, and poetic API keys and unique identifiers for your applications.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks