6.5 KiB
Carneiro Tech - Professional Consulting Website
Professional website for Carneiro Tech - Solution Design & Technical Consulting, built with ASP.NET MVC Core and Bootstrap.
Features
- Modern Design: Agency Bootstrap template adapted for consulting
- Markdown-based Cases: Easy portfolio management with .md files
- SEO Optimized: Meta tags, Open Graph, Twitter Cards, JSON-LD structured data
- Responsive: Mobile-first design using Bootstrap 5
- Tag Filtering: Filter cases by technology/category
- Sitemap: Automatic XML sitemap generation
- Docker Ready: Containerized for easy deployment
Tech Stack
Backend
- ASP.NET MVC Core 8
- C# 12
- Markdig (Markdown parsing)
- YamlDotNet (YAML front matter)
Frontend
- Bootstrap 5 (Agency template)
- Font Awesome icons
- Google Fonts (Montserrat, Roboto Slab)
Deployment
- Docker & Docker Compose
- Ready for OCI (Oracle Cloud Infrastructure)
Project Structure
CarneiroTech/
├── Controllers/
│ ├── HomeController.cs # Homepage, sitemap, contact
│ └── CasesController.cs # Cases list and details
├── Models/
│ ├── CaseModel.cs
│ ├── CaseMetadata.cs
│ ├── ContactFormModel.cs
│ └── SitemapItem.cs
├── Services/
│ ├── ICaseService.cs
│ ├── CaseService.cs
│ ├── IMarkdownService.cs
│ └── MarkdownService.cs
├── Views/
│ ├── Home/
│ │ └── Index.cshtml # Homepage
│ ├── Cases/
│ │ ├── Index.cshtml # Cases list
│ │ └── Details.cshtml # Individual case
│ └── Shared/
│ └── _Layout.cshtml # Main layout with SEO
├── Content/
│ └── Cases/ # Markdown case files
│ ├── sap-integration-healthcare.md
│ ├── legacy-modernization.md
│ └── mvp-definition.md
├── wwwroot/
│ ├── css/ # Bootstrap template CSS
│ ├── js/ # Bootstrap template JS
│ ├── img/ # Images and logo
│ └── robots.txt
├── Dockerfile
├── docker-compose.yml
└── README.md
Getting Started
Prerequisites
- .NET 8 SDK
- Docker (optional, for containerized deployment)
Installation
-
Clone the repository
git clone <repository-url> cd CarneiroTech -
Restore dependencies
dotnet restore -
Run the application
dotnet run -
Open in browser Navigate to:
http://localhost:5000orhttps://localhost:5001
Running with Docker
-
Build and run with Docker Compose
docker-compose up -d -
Access the application Navigate to:
http://localhost:8080 -
Stop the container
docker-compose down
Adding New Cases
1. Create a Markdown File
Create a new file in Content/Cases/ folder:
touch Content/Cases/my-new-case.md
2. Add Front Matter + Content
---
title: "My Amazing Project"
slug: "my-amazing-project"
summary: "Short summary for cards and SEO"
client: "Client Name"
industry: "Industry"
timeline: "3 months"
role: "Your Role"
image: "/img/cases/project.jpg"
tags:
- Tag1
- Tag2
- Tag3
featured: true
order: 1
date: 2024-01-15
seo_title: "SEO optimized title (max 60 chars)"
seo_description: "SEO description (max 160 chars)"
seo_keywords: "keyword1, keyword2, keyword3"
---
## Overview
Your case content here in Markdown format...
### Subsection
More content...
- Bullet points
- Work great
\`\`\`csharp
// Code blocks work too
public void Example() {
Console.WriteLine("Hello!");
}
\`\`\`
3. Refresh the Application
The case service uses in-memory caching (60 minutes). Either:
- Wait for cache expiration
- Restart the application
- Implement cache invalidation
4. Access Your Case
Navigate to: /cases/my-amazing-project
Markdown Features
Supported Markdown features:
- Headers (H1-H6)
- Bold, italic,
strikethrough - Lists (ordered and unordered)
- Links and images
- Code blocks with syntax highlighting
- Tables
- Blockquotes
- Horizontal rules
SEO Features
Meta Tags
- Dynamic title, description, keywords per page
- Canonical URLs
- Author meta tag
Open Graph
- Full OG tags for social sharing
- Dynamic OG images per case
- Locale support (pt_BR)
Twitter Cards
- Summary cards with large images
- Dynamic content per page
Structured Data
- JSON-LD Organization schema
- Professional service markup
- Enhanced search results
Sitemap
- Auto-generated XML sitemap
- Accessible at
/sitemap.xml - Includes homepage, cases index, and all individual cases
Robots.txt
- Located at
/robots.txt - Allows all crawlers
- Points to sitemap
Configuration
Caching
Cases are cached in memory for 60 minutes. To adjust:
Edit Services/CaseService.cs:
private const int CACHE_MINUTES = 60; // Change this value
Site URL
Update the canonical URL and sitemap URLs in:
Views/Shared/_Layout.cshtml(line 12)Controllers/HomeController.cs(Sitemap method)
Replace https://carneirotech.com with your domain.
Deployment
Docker Deployment
-
Build the image
docker build -t carneirotech:latest . -
Run the container
docker run -d -p 8080:80 --name carneirotech carneirotech:latest
Docker Compose Deployment
docker-compose up -d
OCI (Oracle Cloud) Deployment
- Push image to OCI Container Registry
- Create Container Instance
- Configure port mapping (80/443)
- Set environment variables
- Mount volume for Content folder (optional)
Customization
Logo
Replace /wwwroot/img/logo.svg with your logo.
Update navbar logo reference in _Layout.cshtml if needed.
Colors
The template uses Bootstrap 5 with custom colors. To customize:
Edit /wwwroot/css/styles.css:
- Primary color:
#ffc800(yellow/gold) - Dark color:
#212529 - Fonts: Montserrat, Roboto Slab
Content
Edit the following views to customize content:
Views/Home/Index.cshtml- Homepage contentViews/Shared/_Layout.cshtml- Navigation, footerControllers/HomeController.cs- Contact form logic
License
This project is private and proprietary.
Support
For issues or questions, contact: ricardo@carneirotech.com
Built with ❤️ for Carneiro Tech