Skip to content

Instantly share code, notes, and snippets.

View angelxmoreno's full-sized avatar

Angel S. Moreno angelxmoreno

View GitHub Profile
@angelxmoreno
angelxmoreno / bun-tooling-bootstrap.md
Last active June 4, 2026 16:35
Bun + Biome + Lefthook + commitlint + Fallow bootstrap for new projects (silica-cli pattern)

Bun tooling bootstrap

A baseline setup for a new TypeScript/Bun project. Used in silica-cli. Copy the files, tweak the values that are personal preference, ship.

What you get

  • Biome for linting and formatting (replaces ESLint + Prettier)
  • Lefthook for git hooks
  • commitlint enforcing conventional commits
  • Fallow for codebase intelligence (dead code, duplication, complexity)
@angelxmoreno
angelxmoreno / desktop-ux-web-app-standards.md
Last active September 10, 2026 04:41
Personal notes on desktop-style UX patterns in web applications, including routing, layout, motion, and component strategy.

Desktop UX Standards Inside a Web Tech Stack

Overview

Modern applications are increasingly built with web technologies but are expected to behave like professional desktop tools. This document defines the principles, patterns, and behavioral rules that make a web-based application feel desktop-class instead of page-centric.

The gap between web and desktop UX has narrowed significantly. Apps like Linear, Figma, Notion, and VS Code for the Web have proven that a web stack can fully achieve desktop-class behavior. The distinction this document draws is about intent and defaults, not a hard capability ceiling: desktop UX is a choice to optimize for long-lived, high-efficiency workflows, and the web platform now provides everything needed to make that choice.


@angelxmoreno
angelxmoreno / Configuring-JavaScript-Tools-ESLint-Prettier-Husky-CommitLint-LintStaged.md
Created January 25, 2024 04:48
ESlint, Prettier, Husky, CommitLint and LintStaged
  1. Install deps
npx husky-init && yarn add -D eslint prettier eslint-config-universe lint-staged @commitlint/cli @commitlint/config-conventional eslint-plugin-md 
  1. Add config rules to your package.json file:
"eslintConfig": {
      "root": true,
      "ignorePatterns": [
@angelxmoreno
angelxmoreno / exchange_token.ts
Created December 13, 2023 22:50
exchange_token
function _encode(obj: object) {
let string = "";
for (const [key, value] of Object.entries(obj)) {
if (!value) continue;
string += `&${encodeURIComponent(key)}=${encodeURIComponent(value)}`;
}
return string.substring(1);
<?php
declare(strict_types=1);
namespace SeoBakery\Test\TestCase\Core;
use Cake\ORM\Table;
use Cake\ORM\TableRegistry;
use Cake\TestSuite\TestCase;
use SeoBakery\Test\SeoObjects\Product;
import {
BeforeCreate,
BeforeUpdate,
Collection,
Entity,
EntityManager,
EntityRepositoryType,
ManyToOne,
OneToMany,
Property,
@angelxmoreno
angelxmoreno / ApiAppController.php
Last active June 18, 2021 02:45
CRUD Not Validating
<?php
namespace App\Controller\Api;
use App\Controller\AppController;
use Crud\Controller\Component\CrudComponent;
use Crud\Controller\ControllerTrait;
use Exception;
/**
* ApiApp Controller
import React from 'react';
import {useField} from 'formik';
import {FormFeedback, FormGroup, Input, Label} from 'reactstrap';
export const InputText = ({label, ...props}) => {
props.type = props.type || 'text';
const [field, meta, helpers] = useField(props);
const id = `${field.name}Input`;
const isInvalid = !!(meta.touched && meta.error);
const errorMsg = meta.error || ' ';
<?php
namespace App\Authentication\Authenticator;
use ArrayAccess;
use Authentication\Authenticator\FormAuthenticator;
use Authentication\Authenticator\Result;
use Authentication\Identifier\IdentifierInterface;
use Cake\Utility\Security;
use Firebase\JWT\JWT;
<?php
namespace App\Authentication\Authenticator;
use Authentication\Authenticator\FormAuthenticator;
use Psr\Http\Message\ServerRequestInterface;
/**
* Class ApiAuthenticator
* @package App\Authentication\Authenticator