You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+37-9Lines changed: 37 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,26 +8,27 @@
8
8
9
9
## Features
10
10
11
-
The greatest care is devoted to a solid, clear, comprehensive, understandable, maintainable and customizable structure.
11
+
The greatest care is devoted to a solid, clear, comprehensive, understandable, maintainable and customizable code structure.
12
12
13
13
#### Astro
14
14
15
15
- Latest Astro, statically generated, high performance
16
16
- Post and Project content collections for `.mdx` content
17
17
- Support for both Tags (1:N) and Categories (1:1) relations
18
-
- Astro view transitions
19
-
- Astro optimized images
18
+
- Astro view transitions that track Post across all the pages
19
+
- Astro optimized images with all image sizes and breakpoints centralized into a single place as constants
20
20
- Pagination for both blog and projects pages
21
21
- Environment variable controlled preview mode for draft posts and projects
22
-
- Embedded code syntax highlighting using `expressive-code`integration
23
22
- RSS and Json feed endpoints
23
+
- Enabled React integration for components that require client side interactivity
24
24
25
25
#### Structure
26
26
27
27
- Extracted configuration for integrations and plugins to keep `astro.config.ts` clean and readable
28
28
- All website routes centralized into a single constant object
29
29
- All file system paths centralized into a single constant object
30
-
- All image sizes and breakpoints centralized into a single place as constants
30
+
- Clear, separated, hierarchical, both centered and full-width layouts for all types of pages:`.mdx` pages, collections pages - Post and Project, and List pages - indexes with pagination
31
+
- Extracted logic for querying content collections for clean and readable `getStaticPaths()`
31
32
32
33
#### Styling
33
34
@@ -36,28 +37,53 @@ The greatest care is devoted to a solid, clear, comprehensive, understandable, m
36
37
- Tailwind responsive styling, both spacings and typography
37
38
- Three layer (base/components/utilities) CSS code organization
38
39
- System for keeping typography styles in sync between markdown (prose) and custom components
40
+
- Customized typography plugin prose class
39
41
- Component styles extracted into CSS files with `class-variance-authority` for variants
42
+
-`tailwind-merge` and `clsx` for dynamic class names
40
43
41
44
#### SEO and Metadata
42
45
43
46
- Centralized and typed metadata for all types of pages, with defaults
44
-
- Open graph image endpoint with Satori generated images for all pages with hero image and random gradient background
47
+
- Open Graph image endpoint with Satori template generated images for all pages with hero image and random gradient background
45
48
- Sitemap generated at build-time
49
+
- Custom styled 404 page
50
+
51
+
#### Website
52
+
53
+
- Organized assets structure for both optimized (`/src`) and un-optimized (`/public`) images with extracted defaults
54
+
-`astro-icon` package supporting both material design (`mdi`) icons and local SVG's
55
+
- Paginated list pages for filtering posts: by tag - `/tags`, by category - `categories`, by both - `/explore` - Explore (Archive) page
56
+
- Collapsible navbar with items stored as array and active item for the current route
57
+
- Table of contents for blog posts
58
+
- Design system with `.mdx` pages available at `/design` path for clear preview and debugging of all visual components
59
+
- Share component supporting Twitter, Facebook, Reddit, LinkedIn and Hackernews
46
60
47
61
#### External libraries
48
62
49
63
- Comments with Giscus and dark mode support
64
+
-`astro-embed` for embedding tweets, YouTube and Vimeo videos, and Open Graph links
65
+
- Embedded code syntax highlighting using `expressive-code`integration
50
66
51
67
#### Types
52
68
53
69
- Fully Typescript, all types are located in a separate folder
54
70
- Centralized Zod schemas for Post, Project and Config models with proper defaults to prevent runtime exceptions
55
71
- Fully typed and build-time validated config and environment variables
56
-
- Enhanced Post collection model to include calculated reading time
72
+
- Abstracted Post and Project collection models that can include additional fields like calculated reading time
73
+
74
+
#### Development
75
+
76
+
- Typescript path aliases for clean and organized imports
77
+
- Prettier formatting with sorted imports
78
+
- ESLint syntax checking
57
79
58
80
#### Deployment
59
81
60
-
- Latest git commit info is included in the website footer for easy identifying of currently deployed version
82
+
- Latest git commit info is included in the website footer for easy identification of currently deployed version
83
+
- Production deployments with Github Pages, Nginx and Docker image
84
+
- All three deployment methods are supported both in Github Actions and locally
85
+
- The same bash scripts reused for both Github Actions and local deployments for easy debugging locally
86
+
- Support for building both `x86` and `arm` Docker images
61
87
62
88
## Roadmap
63
89
@@ -66,6 +92,8 @@ The greatest care is devoted to a solid, clear, comprehensive, understandable, m
66
92
- Add remote markdown page
67
93
- Validate config with `astro:env`
68
94
- Render `.mdx` for RSS using component containers
95
+
- Review and improve ESLint, (strictest) Typescript and Prettier configs
96
+
- Improve visual design
69
97
70
98
## Credits
71
99
@@ -74,7 +102,7 @@ The most important projects, examples, demos, resources that I reused and review
74
102
- Starter project, initial structure, some components, some plugins, integrations, libs, styling choices - repo: [paularmstrong/paularmstrong.dev](https://github.com/paularmstrong/paularmstrong.dev), blog: https://paularmstrong.dev/blog
0 commit comments