> Today I am creating new apps ]Text counter app and ]QR generator
@ Welcome on my new webpage jkliment.cz
// A personal website where a blog, a resume, and my own tools come together.
// A personal website where a blog, a resume, and my own tools come together.
> Today I am creating new apps ]Text counter app and ]QR generator
//New app for generating QR codes
> UI Management: Switches between form tabs for different QR types and auto-fills demo data for testing.
> Data Formatting: Converts user inputs into standardized text formats required for QR codes (e.g., WIFI:..., mailto:..., BEGIN:VCARD...)
> Rendering: Generates the visual QR code using a local JavaScript library on an HTML canvas. If the library is blocked (e.g., by AdBlock), it safely falls back to fetching an image from an external API.
> Exporting: Handles button clicks to download, copy, or natively share the final QR code.
> Visual: The QR code displayed on the screen (Canvas or Image).
> Text: The raw, formatted data string shown in a preview box.
> Files: Downloadable .png or .svg files of the QR code.
> System Actions: Text copied to the clipboard or images sent to the device's native sharing menu.
//New app for counting words, characters, paragraphs and spaces
> Real-Time Analysis: Instantly processes text as the user types, calculating multiple metrics simultaneously without needing to click a "calculate" button.
> Smart Parsing: Uses regular expressions (RegEx) to accurately distinguish and count complex elements like paragraphs (separated by empty lines) and sentences (ending in ., !, or ?).
> Customizable Counting: Allows users to toggle specific rules, such as trimming extra spaces or ignoring newlines, which adjusts how the word count is calculated.
> Auto-Save / Memory: Automatically saves the typed text to the browser's localStorage with every keystroke, ensuring the user doesn't lose their text if they accidentally refresh or close the page.
> Statistical Metrics: Six live numerical outputs displayed on the screen: Total Characters, Characters (no spaces), Words, Lines, Sentences, and Paragraphs
> System Actions: Copies the text to the user's clipboard (with a fallback method for older browsers) and triggers a brief visual "toast" notification (e.g., "Copied").
> Saved Data: The raw text content is continuously written to the browser's local storage to persist between sessions.
> Today I am creating a page #blog.html as part of sorting individual sections.
> So I created a tree with a division into individual sections in html and adapted the css to it, for a better graphic appearance I also added javascript for viewing the history.
> The whole thing took me about 2 hours, but it looks according to my expectations.
> Tomorrow I have to devote more time to applications and adapt their css so that it looks like the other pages.
> I also managed to create a simple page #contact.html and #cv - I made this simple and clear only in html and css.
> I could add a cv to download there, but in time... Well, we'll see in time...
//New app for generating passwords
> Secure Generation: Creates highly secure passwords using the browser's built-in cryptography API (crypto.getRandomValues), ensuring the randomness cannot be easily predicted.
> Customization Rules: Lets users tailor the password by choosing length and character sets (lowercase, uppercase, numbers, symbols, spaces). It includes advanced rules like forcing at least one character from each selected set, or removing lookalike characters (e.g., "O" and "0", "l" and "1").
> Strength Calculation: Mathematically estimates the password's entropy (in bits) and translates it into a human-readable strength rating (from "Weak" to "Extremely strong").
> Memory & Shortcuts: Saves the user's exact configuration to localStorage and supports quick keyboard shortcuts (Enter to generate, C to copy).
> Text/Visual: Displays the generated password on the screen alongside a dynamic progress bar and a text snippet explaining how secure the password actually is.
> System Actions: Securely copies the final password text to the device's clipboard for easy pasting.
> Saved Data: Writes the user's slider and checkbox preferences to the browser's local storage so they persist on the next visit.
//New app for online dice playing for board games
> Rolling Simulation: Animates a virtual dice roll by rapidly cycling through random numbers before landing on a final result.
> Customization: Allows users to switch between a 6-sided (D6) and 20-sided (D20) die, and change the die's color.
> Memory / Storage: Automatically saves the user's settings (color, dice type) and a history of the last 12 rolls to the browser's localStorage, so they remain even after refreshing the page.
> Keyboard Shortcuts: Lets users roll the die quickly by pressing the Spacebar or the R key.
> Visual/UI: Displays the final randomized number on the die and updates the on-screen history log with the latest rolls.
> Animation: Toggles CSS classes (rolling) to trigger visual shaking/rolling effects.
> Saved Data: Writes the configuration and history array locally to the user's browser storage.
//New app for merge PDF's documents
> Client-Side Merging: Combines multiple PDF files entirely within the user's browser using the pdf-lib library. No files are uploaded to a server, ensuring 100% privacy.
> File Management: Provides a drag-and-drop interface where users can add, reorder (by dragging), and remove PDF files. It enforces safety limits (maximum 20 files and 200 MB total).
> Selective Extraction: Allows users to input custom page ranges (e.g., "1-3, 5") so they can merge only specific pages from a document rather than the whole file.
> Validation & Feedback: Checks for invalid file types or incorrect page ranges before starting, and provides real-time progress updates while processing.
> File Output: A dynamically generated, single combined .pdf file ready for immediate download.
> Visual/UI: A live progress bar during the merge, and a final summary showing the total number of pages and the final file size in MB.
> Alerts: On-screen error lists if the user exceeds size limits, uploads wrong file types, or types invalid page ranges.