This repository contains various learning materials, code examples, and projects across different programming languages and technologies.
This repository serves as a learning resource and reference for various programming concepts, frameworks, and technologies. Each directory contains practical examples and implementations to help understand different aspects of software development.
- Markdown-based - Write documentation in plain Markdown
- Angular 19 - Built with the latest Angular features (signals, standalone components, new control flow)
- Full-text search - Search through document titles AND content with highlighted results
- Mobile-friendly - Fully responsive on all devices
- Syntax highlighting - Beautiful code blocks with Prism.js
- GitHub Pages Ready - One-click deployment with GitHub Actions
- Angular 19 - Framework with standalone components
- Marked - Markdown parsing
- Prism.js - Syntax highlighting
- Node.js 18.19.0 or higher
- npm 10.0.0 or higher
npm installnpm startThe application will be available at http://localhost:4200
npm run build:prodThe build artifacts will be in the dist/learning-curve directory.
Learning-Curve/
βββ src/
β βββ app/
β β βββ core/ # Core services, models, guards
β β β βββ models/ # TypeScript interfaces and types
β β β βββ services/ # Singleton services
β β βββ shared/ # Shared components
β β β βββ components/ # Reusable UI components
β β βββ features/ # Feature modules
β β β βββ docs/ # Documentation viewer feature
β β βββ app.component.ts # Root component
β β βββ app.config.ts # App configuration
β β βββ app.routes.ts # Route definitions
β βββ assets/
β β βββ docs/ # Markdown files go here!
β β β βββ getting-started/
β β β βββ architecture/
β β β βββ development/
β β β βββ ...
β β βββ images/ # Images referenced in docs
β βββ styles.scss # Global styles
β βββ index.html # HTML entry point
βββ angular.json # Angular configuration
βββ tsconfig.json # TypeScript configuration
βββ package.json # Dependencies
Add your .md file to src/assets/docs/:
# My New Documentation
This is the content of my documentation.
## Code Example
\`\`\`typescript
const greeting = 'Hello World!';
console.log(greeting);
\`\`\`Folder Structure Example:
src/assets/docs/
βββ getting-started.md # Top-level doc
βββ getting-started/
β βββ installation.md # Nested doc
β βββ setup.md
βββ api/
βββ overview.md
Avoid these characters in filenames:
#(hash/pound) - Use alternatives like "CSharp" instead of "C#"%(percent) - Use "Percent" spelled out instead
Why? These characters have special meaning in URLs and cause loading issues with the development server. The navigation generator will warn you if it detects these characters in your filenames.
Allowed special characters:
- Spaces (will be encoded as
%20) &(ampersand - will be encoded as%26)-(hyphens)_(underscores)
No need to manually update navigation! The system automatically:
- β
Scans
docs/folder structure - β
Extracts titles from the first
# Headingin each file - β Creates hierarchical navigation based on folder structure
- β Generates icons based on folder names
Simply run:
npm run generate:navOr it runs automatically when you use npm start or npm run build:prod.
npm startNavigate to your new page - it will appear in the sidebar automatically!
git add src/assets/docs/
git commit -m "docs: Add my new documentation"
git pushIf using GitHub Pages, deployment happens automatically!
This project uses the latest Angular 19 features for optimal performance and developer experience:
All components are standalone - no NgModules required:
@Component({
selector: 'app-example',
standalone: true,
imports: [CommonModule, RouterLink],
// ...
})Reactive state with Angular Signals:
readonly navigation = signal<NavigationItem[]>([]);
readonly loading = signal<boolean>(false);Modern template syntax:
@if (loading()) {
<div>Loading...</div>
} @else {
<div>Content</div>
}
@for (item of items(); track item.id) {
<div>{{ item.name }}</div>
}Dependency injection without constructors:
private readonly http = inject(HttpClient);
private readonly router = inject(Router);Fast builds with the new application builder in angular.json:
"builder": "@angular-devkit/build-angular:application"withComponentInputBinding()- Bind route params to inputswithViewTransitions()- Smooth page transitionswithFetch()- Use Fetch API instead of XHR
- Use standalone components everywhere
- Prefer signals over BehaviorSubjects for state
- Use inject() instead of constructor injection
- Use new @if/@for syntax instead of *ngIf/*ngFor
- Follow strict TypeScript rules
- Components:
*.component.ts - Services:
*.service.ts - Models:
*.model.ts - Guards:
*.guard.ts
- Keep components small and focused
- Use services for business logic
- Use signals for reactive state
- Implement proper error handling
- Write meaningful commit messages
# Production build with optimizations
npm run build:prod
# Output will be in: dist/learning-curve/browser/Configured in tsconfig.json:
"paths": {
"@app/*": ["src/app/*"],
"@core/*": ["src/app/core/*"],
"@shared/*": ["src/app/shared/*"],
"@features/*": ["src/app/features/*"]
}Use in imports:
import { MarkdownService } from '@core/services/markdown.service';| Command | Description |
|---|---|
npm start |
Start development server (auto-generates navigation) |
npm run build |
Build for production |
npm run build:prod |
Build for GitHub Pages with production optimizations |
npm run build:gitlab |
Build for GitLab Pages with specific configuration |
npm run generate:nav |
Manually generate navigation from docs folder |
npm run deploy:github |
Manual deployment to GitHub Pages |
npm run watch |
Build and watch for changes |
npm test |
Run unit tests |
npm run lint |
Lint the codebase |
This is a personal learning project. Feel free to use the code examples for learning purposes.
This project comes with:
- β Full-text search through titles and content
- β Auto-generated table of contents for each page
- β Dynamic navigation from folder structure
- β Syntax highlighting for 10+ languages
- β Responsive mobile-friendly design
- β GitHub Actions workflow for auto-deployment
- β Logging service for debugging
- β SPA routing with Angular Router
Built with β€οΈ with help from Claude Code!