Professional software development consultancy website built with Hugo, featuring automated content synchronization from dev.to and comprehensive CI/CD pipeline.
- Overview
- Features
- Technology Stack
- Quick Start
- Development
- Testing
- Deployment
- Content Management
- Documentation
- Contributing
- License
JetThoughts website is a sophisticated static site generator project that showcases the company's software development and consultancy services. The site features automated blog content synchronization from dev.to, a custom Hugo theme, and comprehensive testing framework.
- 540+ technical articles automatically synced from dev.to
- Responsive design with mobile-first approach
- Visual regression testing to ensure consistency
- Automated CI/CD with GitHub Actions
- SEO optimized with proper meta tags and structured data
- Performance optimized with PurgeCSS and asset minification
- Dynamic blog system with automated dev.to synchronization
- Service showcases for consultancy offerings
- Client case studies and success stories
- Use case demonstrations
- Career opportunities with Google Forms integration
- Contact system with form submissions
- Static site generation with Hugo Extended
- Automated content sync every 10 minutes
- Visual regression testing with screenshot comparison
- Staging environment with surge.sh deployment
- Multi-level navigation with dropdown menus
- Asset optimization with PostCSS pipeline
- Git-based versioning for content
Category | Technologies |
---|---|
Static Site Generator | Hugo v0.147.9 Extended |
Theme | Custom "Beaver" theme |
Languages | HTML, CSS (PostCSS), JavaScript, Ruby |
Package Managers | Bun (Node.js), Bundler (Ruby) |
Testing | Minitest, Capybara, Selenium WebDriver |
CI/CD | GitHub Actions, GitHub Pages |
Content Source | dev.to API integration |
{
"build": ["@fullhuman/postcss-purgecss", "autoprefixer", "cssnano", "esbuild"],
"formatting": ["prettier", "prettier-plugin-go-template"],
"deployment": ["surge"]
}
# Testing
gem "minitest"
gem "capybara"
gem "selenium-webdriver"
gem "capybara-screenshot-diff"
# API & HTTP
gem "httparty"
gem "faraday"
gem "sanity-ruby"
# Development
gem "standard"
gem "simplecov"
- Hugo Extended v0.147.9 or higher
- Bun or Node.js v18+
- Ruby 3.0+ with Bundler
- Git for version control
- Clone the repository:
git clone https://github.com/jetthoughts/jetthoughts.github.io.git
cd jetthoughts.github.io
- Run the setup script:
bin/setup
This will automatically:
- Install Hugo if not present
- Install Node.js dependencies via Bun
- Install Ruby gems via Bundler
- Set up pre-commit hooks
- Start the development server:
hugo server -D
Visit http://localhost:1313
to view the site.
jetthoughts.github.io/
βββ content/ # Content files (markdown)
β βββ blog/ # Blog posts (synced from dev.to)
β βββ pages/ # Static pages
β βββ clients/ # Client case studies
β βββ services/ # Service descriptions
β βββ use-cases/ # Use case examples
βββ themes/beaver/ # Custom theme
β βββ layouts/ # Template files
β βββ assets/ # Theme assets
β βββ archetypes/ # Content templates
βββ assets/ # Site assets (images, etc.)
βββ data/ # Data files (YAML)
βββ static/ # Static files
βββ lib/ # Ruby libraries for sync
βββ test/ # Test suite
βββ bin/ # Utility scripts
Command | Description |
---|---|
hugo server -D |
Start development server with drafts |
hugo build |
Build production site |
npm run test |
Run test suite |
bin/sync_with_devto |
Sync blog posts from dev.to |
bin/surge/deploy |
Deploy to staging (surge.sh) |
bin/setup |
Initial project setup |
Create a .env
file for local development:
# API Keys
DEVTO_API_KEY=your_dev_to_api_key
# Deployment
SURGE_DOMAIN=your-staging-domain.surge.sh
# Testing
SELENIUM_BROWSER=chrome_headless
The project includes comprehensive testing with multiple test types:
# Run all tests
npm run test
# Run specific test type
ruby test/test_blog_sync.rb # Unit tests
ruby test/test_system.rb # System tests
ruby test/test_homepage.rb # Homepage tests
- Unit Tests - Test individual components and functions
- System Tests - Full browser automation tests
- Visual Regression - Screenshot comparison tests
- Integration Tests - API and external service tests
Test coverage reports are generated automatically:
open coverage/index.html
The site automatically deploys to GitHub Pages when changes are pushed to the master
branch:
- Push to master:
git push origin master
- GitHub Actions workflow:
- Builds the site with Hugo
- Runs tests
- Deploys to GitHub Pages
Deploy to surge.sh for testing:
bin/surge/deploy
Access staging at: https://your-domain.surge.sh
Blog posts are automatically synchronized from dev.to:
- Runs every 10 minutes via GitHub Actions
- Syncs posts tagged with "jetthoughts" organization
bin/sync_with_devto [options]
Options:
--dry Preview changes without syncing
--force Force sync all articles
--dry --force Preview forced sync
-
Write on dev.to:
- Publish under JetThoughts organization
- Add relevant tags (first 2 tags used in URL)
-
Trigger sync:
- Wait for automatic sync (10 minutes)
- Or run manual sync command
Custom URLs can be configured in devto_urls_mapping.csv
:
article_id,custom_url
12345,/blog/my-custom-url/
Create new pages using Hugo archetypes:
# Create a new service page
hugo new services/new-service/index.md
# Create a new client case study
hugo new clients/new-client/index.md
# Create a new use case
hugo new use-cases/new-use-case/index.md
Edit hugo.toml
to modify navigation:
[[menu.main]]
identifier = "new-item"
name = "New Item"
pageRef = "pages/new-item/"
weight = 70
Document | Description |
---|---|
README.md | Project overview and setup |
ARCHITECTURE.md | Technical architecture details |
CONTRIBUTING.md | Contribution guidelines |
SETUP.md | Detailed setup instructions |
CI-CD.md | CI/CD pipeline documentation |
DEV-TO-INTEGRATION.md | dev.to sync documentation |
DOCS-OVERVIEW.md | Documentation organization guide |
AGENT-GUIDANCE.md | Agent resource locations and guidelines |
The project includes several internal APIs and scripts:
- Sync API (
lib/sync/
) - Handles dev.to synchronization - Testing API (
test/
) - Test utilities and helpers - Build Scripts (
bin/
) - Automation scripts
We welcome contributions! Please see our Contributing Guidelines for details.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Make your changes
- Run tests (
npm run test
) - Commit changes (
git commit -m 'Add amazing feature'
) - Push to branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. See the LICENSE file for details.
- Hugo static site generator team
- dev.to for content platform integration
- GitHub for hosting and CI/CD
- All contributors and maintainers
- Website: https://jetthoughts.com
- Email: [email protected]
- Phone: +1 754 216 9568
- GitHub: @jetthoughts
Made with β€οΈ by JetThoughts Team