Built with passion for JSDev.Space, shared with love for the community β€οΈ
A modern, lightning-fast blog and developer tools platform built with Astro, TypeScript, and Feature-Sliced Design architecture. This project powers jsdev.space - your ultimate resource for JavaScript tutorials, guides, and development tools.
- π₯ Blazing Fast: Built with Astro for optimal performance
- π¨ Modern Design: Clean, responsive UI with dark/light theme support
- π Smart Search: Real-time search across all content with keyboard shortcuts
- π οΈ Developer Tools: Collection of useful converters and generators
- π± Mobile First: Fully responsive design for all devices
- βΏ Accessible: Built with accessibility in mind
- ποΈ FSD Architecture: Well-organized codebase using Feature-Sliced Design
- π MDX Support: Rich content with custom components
- π― SEO Optimized: Perfect Lighthouse scores
- Node.js 18+
- pnpm (recommended) or npm
# Clone the repository
git clone https://github.com/anliberant/jsdev-astro.git
# Navigate to project directory
cd jsdev-space
# Install dependencies
pnpm install
# Start development server
pnpm devVisit http://localhost:4321 to see your site running!
# Build the site
pnpm build
# Preview the build
pnpm previewThis project follows the Feature-Sliced Design methodology for better code organization and maintainability.
src/
βββ app/ # App-level configuration
β βββ config/ # Site configuration
β βββ layouts/ # Global layouts
βββ entities/ # Business entities
β βββ categories/ # Category management
β βββ post/ # Blog posts
β βββ howto/ # How-to tutorials
β βββ tools/ # Tool entities
βββ features/ # Feature implementations
β βββ search/ # Search functionality
β βββ tools/ # Developer tools
β βββ html/ # HTML converters
β βββ mdx/ # MDX editor
βββ shared/ # Shared utilities
β βββ ui/ # Reusable UI components
β βββ helpers/ # Helper functions
β βββ hooks/ # Custom hooks
β βββ utils/ # Utility functions
βββ widgets/ # Complex UI blocks
β βββ header/ # Site header
β βββ footer/ # Site footer
βββ pages/ # Astro pages (routes)
The project features a powerful search system with the following components:
- Location:
src/features/search/ - Real-time search across posts, tutorials, snippets, and Friday links
- Keyboard shortcuts:
βKor/to open search - Smart filtering by content type
- Fuzzy search capabilities
src/features/search/ui/search.astro- Main search componentsrc/features/search/model/store.ts- Search logic and state managementsrc/features/search/lib/utils.ts- Search utilities
Find all developer tools in the src/features/tools/ directory:
- HTML to JSX Converter (
jsx/) - Convert HTML to React JSX - HTML to Pug Converter (
pug/) - Transform HTML to Pug templates - HTML to Astro Converter (
astro/) - Convert HTML to Astro components - HTML Boilerplate Generator (
boilerplate/) - Generate HTML5 boilerplates - HTML Table Generator (
table/) - Create responsive HTML tables
- MDX Editor (
editor/) - Live Markdown editor with preview
Each tool follows the same structure:
tool-name/
βββ lib/ # Core logic
βββ ui/ # UI components
βββ types/ # TypeScript types
βββ tool-main.astro # Main component
Content is organized using Astro's content collections:
src/content/
βββ posts/ # Main blog posts
βββ howtos/ # Tutorial guides
βββ snippets/ # Code snippets
βββ friday/ # Friday link roundups
Each content type uses frontmatter for metadata and supports MDX for rich content.
- CSS Variables: Consistent theming with CSS custom properties
- Dark/Light Mode: Automatic theme switching
- Responsive Design: Mobile-first approach
- Component Styles: Scoped styles in Astro components
Styles are located in:
src/shared/styles/- Global styles and variables- Component-level styles within
.astrofiles
- Base Components: Button, Badge, Card, etc.
- Layout Components: Breadcrumbs, Pagination, TOC
- MDX Components: Custom components for rich content
- Header: Navigation, search, theme switcher
- Footer: Links, social icons, site info
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Follow the FSD architecture principles
- Add tests if applicable
- Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow the existing FSD structure
- Use TypeScript for type safety
- Write semantic, accessible HTML
- Keep components small and focused
- Add JSDoc comments for complex functions
Main configuration files:
astro.config.mjs- Astro configurationsrc/app/config/site.ts- Site-wide settingssrc/app/config/tools.ts- Tools configuration
# Development
pnpm dev # Start dev server
pnpm dev:clean # Clean install and dev
# Building
pnpm build # Production build
pnpm preview # Preview build
# Code Quality
pnpm lint # Lint code
pnpm lint:fix # Fix linting issues
pnpm prettier # Format code
pnpm type-check # TypeScript checkVisit the live site at jsdev.space to see this project in action!
This project is open source and available under the MIT License.
- Built with Astro
- Follows Feature-Sliced Design
- Icons by Lucide
- Inspired by the JavaScript development community
Made with β€οΈ for developers, by developers. Originally crafted for JSDev.Space, now open for everyone to use, learn, and contribute!