# 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](https://dotnet.microsoft.com/download/dotnet/8.0) - [Docker](https://www.docker.com/get-started) (optional, for containerized deployment) ### Installation 1. **Clone the repository** ```bash git clone cd CarneiroTech ``` 2. **Restore dependencies** ```bash dotnet restore ``` 3. **Run the application** ```bash dotnet run ``` 4. **Open in browser** Navigate to: `http://localhost:5000` or `https://localhost:5001` ### Running with Docker 1. **Build and run with Docker Compose** ```bash docker-compose up -d ``` 2. **Access the application** Navigate to: `http://localhost:8080` 3. **Stop the container** ```bash docker-compose down ``` ## Adding New Cases ### 1. Create a Markdown File Create a new file in `Content/Cases/` folder: ```bash touch Content/Cases/my-new-case.md ``` ### 2. Add Front Matter + Content ```markdown --- 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`: ```csharp 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 1. **Build the image** ```bash docker build -t carneirotech:latest . ``` 2. **Run the container** ```bash docker run -d -p 8080:80 --name carneirotech carneirotech:latest ``` ### Docker Compose Deployment ```bash docker-compose up -d ``` ### OCI (Oracle Cloud) Deployment 1. Push image to OCI Container Registry 2. Create Container Instance 3. Configure port mapping (80/443) 4. Set environment variables 5. 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 content - `Views/Shared/_Layout.cshtml` - Navigation, footer - `Controllers/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**