Welcome to the Angor Blog! This guide will walk you through everything you need to know about creating and submitting blog posts for the Angor platform.
- Getting Started
- Blog Structure
- Creating New Posts
- Post Format and Guidelines
- Frontmatter Reference
- Writing Guidelines
- Images and Assets
- Multilingual Support
- Testing Your Post
- Submission Process
- Best Practices
Before you start contributing, make sure you have:
- Node.js (version 18 or higher)
- Git
- A text editor (VS Code recommended)
- Basic knowledge of Markdown
-
Clone the repository:
git clone https://github.com/block-core/angor-blog.git cd angor-blog
-
Install dependencies:
npm install
-
Start the development server:
npm run dev
-
Open your browser: Navigate to
http://localhost:4321
to see the blog locally.
The Angor blog supports four languages and follows this structure:
src/content/blog/
├── en/ # English posts
├── ar/ # Arabic posts
├── fa/ # Persian/Farsi posts
└── fr/ # French posts
Each post is organized in its own directory with an index.md
file:
src/content/blog/en/my-post-title/
└── index.md
We've created a convenient script to help you create new posts quickly.
For a single language:
npm run new-post en "Your Post Title"
npm run new-post fa "عنوان پست شما"
npm run new-post ar "عنوان منشورك"
npm run new-post fr "Titre de votre article"
For all languages at once:
npm run new-post all "Your Post Title"
If you prefer to create posts manually:
- Navigate to the appropriate language directory
- Create a new folder with your post slug (lowercase, hyphen-separated)
- Create an
index.md
file inside the folder - Add the required frontmatter and content
Each post must be in its own directory with an index.md
file:
src/content/blog/en/understanding-angor-protocol/
└── index.md
- Use lowercase letters only
- Separate words with hyphens (-)
- Keep it concise but descriptive
- Avoid special characters or numbers unless necessary
Good examples:
understanding-angor-protocol
bitcoin-and-decentralized-funding
how-to-invest-safely
Bad examples:
Understanding_Angor_Protocol
bitcoin&decentralized-funding
how to invest safely
Every post must start with YAML frontmatter containing metadata:
---
title: "Your Post Title"
description: "A brief description of your post (150-160 characters recommended)"
author: 'Your Name'
role: 'Your Role/Title'
authorImage: "@/images/authors/your-photo.jpg"
authorImageAlt: "Your Name"
pubDate: 2025-07-29
cardImage: "@/images/your-post-image.webp"
cardImageAlt: "Descriptive alt text for your image"
readTime: 8
tags: ['Angor', 'Bitcoin', 'Crowdfunding', 'Protocol']
nostrPublicKey: 'npub1...'
---
Field | Required | Description |
---|---|---|
title |
✅ | The title of your post (will appear in search results and social media) |
description |
✅ | SEO description (150-160 characters recommended) |
author |
✅ | Your full name |
role |
✅ | Your role or title (e.g., "Angor Developer", "Community Manager") |
authorImage |
❌ | Path to your profile image (optional but recommended) |
authorImageAlt |
❌ | Alt text for your profile image |
pubDate |
✅ | Publication date in YYYY-MM-DD format |
cardImage |
✅ | Featured image for the post (appears in listings and social media) |
cardImageAlt |
✅ | Alt text for the featured image |
readTime |
✅ | Estimated reading time in minutes |
tags |
✅ | Array of relevant tags for categorization |
nostrPublicKey |
❌ | Your Nostr public key (npub format) |
Use relevant, specific tags. Common tags include:
Angor
(for posts about the platform)Bitcoin
(for Bitcoin-related content)Protocol
(for technical protocol discussions)Crowdfunding
(for funding-related topics)Tutorial
(for how-to guides)News
(for announcements)Community
(for community-related posts)
- Start with a compelling introduction that hooks the reader
- Use clear headings (H2 and H3) to structure your content
- Include practical examples when explaining concepts
- End with a conclusion or call-to-action
- Be clear and concise: Avoid jargon unless necessary
- Use active voice: Makes your writing more engaging
- Include examples: Real-world examples help readers understand
- Stay focused: Each post should have a clear purpose
- Be authentic: Write in a conversational tone when appropriate
Headings:
## Main Section (H2)
### Subsection (H3)
#### Details (H4)
Lists:
- Use bullet points for unordered lists
- Keep items parallel in structure
1. Use numbers for sequential steps
2. Each item should be clear and actionable
Code blocks:
Use `inline code` for short snippets.
```javascript
// Use code blocks for longer examples
function example() {
return "Hello, Angor!";
}
**Links:**
```markdown
[Link text](https://example.com)
[Internal link](/blog/another-post)
Emphasis:
*Italic text* or _italic text_
**Bold text** or __bold text__
- Optimize images before adding them to the repository
- Use WebP format when possible for better performance
- Provide alt text for accessibility
- Keep file sizes reasonable (under 500KB recommended)
-
Place images in the appropriate directory:
src/images/ ├── your-post-image.webp └── authors/ └── your-photo.jpg
-
Reference images in your post:

-
In frontmatter:
cardImage: "@/images/your-post-image.webp" authorImage: "@/images/authors/your-photo.jpg"
- Featured image (cardImage): 1200x630px recommended
- Author photo: 400x400px recommended
- In-content images: Responsive, max width 800px
- Format: WebP preferred, PNG/JPG acceptable
The Angor blog supports four languages:
Language | Code | Direction |
---|---|---|
English | en |
LTR |
Arabic | ar |
RTL |
Persian/Farsi | fa |
RTL |
French | fr |
LTR |
- Start with English: Create the English version first
- Maintain consistency: Keep the same structure across languages
- Adapt content culturally: Consider cultural context for each language
- Use native speakers: Get translations reviewed by native speakers when possible
Option 1: Use the script for all languages
npm run new-post all "Your Post Title"
Option 2: Create individual language versions
npm run new-post en "Your Post Title"
npm run new-post fa "عنوان پست شما"
npm run new-post ar "عنوان منشورك"
npm run new-post fr "Titre de votre article"
-
Start the development server:
npm run dev
-
Navigate to your post:
- English:
http://localhost:4321/blog/your-post-slug
- Persian:
http://localhost:4321/fa/blog/your-post-slug
- Arabic:
http://localhost:4321/ar/blog/your-post-slug
- French:
http://localhost:4321/fr/blog/your-post-slug
- English:
-
Check for:
- Proper formatting
- Working images
- Correct metadata
- Responsive design
- Reading time accuracy
Before submitting, test the production build:
npm run build
npm run preview
-
Create a new branch:
git checkout -b feature/your-post-name
-
Add your files:
git add . git commit -m "Add: New blog post about [topic]"
-
Push your branch:
git push origin feature/your-post-name
-
Create a Pull Request:
- Go to the GitHub repository
- Click "New Pull Request"
- Select your branch
- Fill out the PR template
Title format:
Add: [Post Title] blog post
Description should include:
- Brief summary of the post
- Target audience
- Any special considerations
- Screenshots (if applicable)
- Research thoroughly: Ensure accuracy of technical information
- Cite sources: Link to relevant resources and documentation
- Update regularly: Keep information current
- Proofread: Check for grammar, spelling, and formatting errors
- Use descriptive titles: Include relevant keywords naturally
- Write compelling descriptions: Encourage clicks from search results
- Use proper headings: Structure content with H2, H3 tags
- Include internal links: Link to other relevant blog posts
- Optimize images: Use descriptive filenames and alt text
- Optimize images: Compress and use appropriate formats
- Keep posts focused: Long posts should be broken into series
- Use lazy loading: Images load as needed
- Test loading speed: Ensure fast page loads
- Use semantic HTML: Proper heading structure
- Provide alt text: Describe images for screen readers
- Ensure contrast: Text should be readable
- Test with screen readers: Verify accessibility
- Be respectful: Maintain a professional tone
- Stay on topic: Focus on Angor, Bitcoin, and related technologies
- Encourage discussion: End posts with questions or calls-to-action
- Respond to feedback: Engage with community comments
Solution:
- Check file paths are correct
- Ensure images are in the
src/images/
directory - Verify image format is supported (WebP, PNG, JPG)
Solution:
- Validate YAML syntax
- Ensure all required fields are present
- Check date format is YYYY-MM-DD
Solution:
- Run
npm run type-check
to find TypeScript errors - Check for syntax errors in Markdown
- Verify all links are working
Solution:
- Test in development mode first
- Check for conflicting CSS
- Ensure responsive design works
If you need assistance:
- Check existing documentation in this repository
- Review similar posts for examples
- Ask in community channels (Discord, Telegram)
- Create an issue on GitHub for technical problems
- Contact the maintainers directly
- Repository cloned and dependencies installed
- Development server running (
npm run dev
) - New post created using script or manually
- Frontmatter completed with all required fields
- Content written following guidelines
- Images optimized and properly referenced
- Post tested locally
- Changes committed to feature branch
- Pull request created with proper description
Thank you for contributing to the Angor Blog! Your insights and expertise help build a stronger, more informed community around decentralized crowdfunding and Bitcoin innovation.