PortfolioMedalcode is a minimalist and modern template designed for developers and digital creatives. Its dark-toned aesthetic with mint green accents offers a clean, elegant, and functional visual experience, ideal for portfolios, dashboards, or tech landing pages.
This repository adheres to the Meta Project Standard. All development progress is tracked automatically via the
Bitacora.md file.
๐ Development Log: Check out the Bitacora.md to see the latest updates and roadmap.
โโโ ๐PortfolioMedalcode โโโ ๐src โโโ ๐features # Feature modules (Domain logic) โโโ ๐shared # Shared resources (Core UI/Utils) โโโ ๐layouts # Global App Layouts โโโ ๐pages # Astro Routing โโโ ๐content # Content Collections โโโ ๐docs # Architecture & AI Governance โโโ ๐ agents.md # AI Agent Roles โโโ ๐ skills.md # Parametric AI Skills โโโ ๐ ARCHITECTURE.md โโโ astro.config.mjs โโโ package.json โโโ tsconfig.json
- Framework: Astro v5.6.1
- UI Library: Preact v10.26.2
- Styling: TailwindCSS v4.0.8
- Icons: astro-icon v1.1.5
- Syntax Highlighting: PrismJS v1.30.0
- Animations: tailwindcss-animated v2.0.0
- Analytics: @vercel/speed-insights v1.2.0
-
๐ Pro Performance
- New:
astro:assetsimage optimization with AVIF/WebP support. - New: Native View Transitions for smooth, app-like navigation.
- Static site generation (SSG) for blazing fast load times.
- Partial hydration with Preact.
- New:
-
๐ฑ PWA & Offline Ready
- New: Full Progressive Web App (PWA) support.
- New: Service Worker for offline capabilities and caching.
- New: Installable on mobile and desktop devices.
-
๐ป Modern Development Experience
- TypeScript support
- Hot module replacement
- ESLint & Prettier integration
-
๐ SEO & Analytics
- New: Enhanced JSON-LD Rich Snippets (Person Schema).
- New: Dynamic RSS Feed generation using Content Collections.
- Built-in sitemap generation
- Vercel Speed Insights
-
๐จ Styling & UI
- TailwindCSS v4 with utility-first styling.
- New: Reading Time estimation for blog posts.
- New: AJAX Contact Form with immediate feedback and security.
- New: Copy Code functionality with visual feedback.
- Animated components with
tailwindcss-animated(Scroll Reveal). - Enhanced Dark Mode with anti-FOUC protection.
- Custom 404 Error Page with auto-language detection.
- Responsive design.
-
๐ Internationalization
- Multi-language support (English/Spanish)
- New: Intuitive Language Picker (ES | EN toggle)
- New: Smart Navigation with mobile support
- JSON-LD Structured Data for SEO (Person Schema)
All projects in this portfolio adhere to strict engineering constraints to ensure production readiness:
- Type Safety: 100% TypeScript codebase preventing runtime type errors.
- Input Validation: Runtime schema validation (Zod) on all API boundaries to reject malformed payloads early.
- CI/CD Ready: Automated pipelines ensure build integrity on every push.
- Non-Custodial Design: No sensitive tokens (GitHub/AWS) are persisted on disk; everything is injected via process environment.
- Hard Limits: All gateways force payload caps (e.g., 1MB) and timeout enforcement (30s) to prevent resource exhaustion.
- Fail-Open Strategy: Critical services (like Cache) are designed to bypass silently on failure to maintain availability.
-
๐ฆ Installation
npm create astro@latest -- --template Medalcode/PortfolioMedalcode
or
git clone https://github.com/Medalcode/PortfolioMedalcode.git
npm install
-
โก Development
npm run dev
-
๐๏ธ Build
npm run build
-
๐ Preview
npm run preview
# Lint your code
npm run lint
# Auto-fix linting issues
npm run lint:fix
# Format code with Prettier
npm run format
# Check code formatting
npm run format:check
# Type checking
npm run check
npm run type-check
# Testing
npm run test # Run unit tests
npm run test:coverage # Run tests with coverageBefore committing:
npm run format # Format code
npm run lint:fix # Fix linting issues
npm run check # Verify types
npm run build # Test buildThe project is configured through several key files:
astro.config.mjs: Main Astro configurationtailwind.config.js: TailwindCSS configurationtsconfig.json: TypeScript configuration
Create new .astro files in the src/pages directory. The file name will determine the route.
To incorporate a new programming language or technological tool into the site's capsules, follow these steps:
-
๐ผ๏ธ Add the SVG icon: Place the SVG file of the language or tool in the
src/iconsfolder.> **๐ก Recommendation**: For SVG icons, I recommend using [SVGL](https://svgl.app/), an excellent library of high-quality vectors that offers optimized icons for most popular languages and technologies. -
๐ Register the language: Open the
utils/languages.tsfile and add a new entry to the languages object following this format:html: { name: "HTML 5", iconName: "html", },
Where:
html: Is the unique identifier for the languagename: Is the name that will be displayed visibly in the interfaceiconName: Is the name of the SVG file without the extension (must match exactly with the file name insrc/icons)
Once these steps are completed, the new language or technology will be available for use in the site's capsules. You can select it when creating or editing projects or posts, and the corresponding icon will be displayed correctly in the interface.
If you encounter any issues during this process, try restarting the development server. In some cases, changes to configuration files or static resources require a restart to be detected correctly.
To verify that the new language has been added correctly, check the list of available technologies in the user interface after restarting the server.
To customize your site's favicon and web app icons, you can generate all the necessary variants using favicon.io. Upload your logo or icon, and the tool will create a full set of optimized files for various devices and platforms.
Place the generated files in the ๐ public directory as follows:
๐ public
โโโ ๐ android-chrome-192x192.png
โโโ ๐ android-chrome-512x512.png
โโโ ๐ apple-touch-icon.png
โโโ ๐ favicon-16x16.png
โโโ ๐ favicon-32x32.png
โโโ ๐ favicon.ico
โโโ ๐ site.webmanifest๐ก Donโt forget to update the contents of
site.webmanifestto match your appโs name, description, and theme color for a complete PWA experience.
- Use TailwindCSS classes for styling
- Add custom styles in
src/styles/global.css
- Create reusable components in
src/components - Import icons using
astro-icon
The site is configured for deployment on Vercel, but can be deployed to any static hosting service.
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- GitSpy โ API intermedia para GitHub con sistema de cachรฉ (Redis), cola de eventos (BullMQ), control de rate limits y una suite de tests completa. Ficha de contenido aรฑadida en
src/content/projects/en/gitspy.mdysrc/content/projects/es/gitspy.md. Repositorio: GitHub - Colabb โ Terminal Linux moderna escrita en C++ con GTK3, integrando asistencia de IA (Totem) para sugerencias contextuales y explicaciรณn de errores en tiempo real. Ficha de contenido aรฑadida. Repositorio: GitHub
- AutoKanban โ Visualizador estรกtico que transforma archivos
Bitacora.mdde GitHub en tableros Kanban interactivos usando la API de GitSpy. Repositorio: GitHub - Pathwise โ (Ex-Panoptes) Ecosistema de navegaciรณn profesional inteligente con Dashboard Web, Extensiรณn y Motor IA para optimizar la bรบsqueda de empleo. Repositorio: GitHub
- FinLogic โ Plataforma de ingenierรญa de datos financieros con arquitectura "Lightweight Ingest, Heavy Analysis" usando DuckDB y FastAPI. Repositorio: GitHub