Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions .claude/commands/api-docs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# API Documentation Generator Command

> Rationale: API docs should be consistent, complete, and testable.

## When to Use
- New endpoints are added or changed
- Major API version updates

## Inputs
- Source code (endpoints/controllers)
- Existing API docs and examples

## Step-by-Step
1. Identify endpoints and group by resource
2. Extract params, types, auth, and error shapes
3. Create/Update tables and runnable examples
4. Add links to related guides and tutorials
5. Validate curl/HTTP examples locally

## Example Invocation
- "/api-docs: generate or update docs for the new orders endpoints"

## Output
- Complete API reference using `docs/templates/api-documentation.md`
- Interactive examples and error handling
- Links to related docs and tutorials
32 changes: 32 additions & 0 deletions .claude/commands/doc-audit.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Documentation Audit Command

> Rationale: Regular audits keep documentation accurate, consistent, and useful. This command defines a repeatable audit workflow for teams and AI assistants.

## When to Use
- Before a release or milestone
- After large refactors or dependency upgrades
- When onboarding new team members

## Inputs
- Project docs in `docs/`
- Standards in `standards/`
- Current status in `docs/status/`

## Step-by-Step
1. Inventory all docs and key sections (index, status, architecture, guides)
2. Validate cross-references and navigation links
3. Verify examples are runnable and up-to-date
4. Identify duplication and move to single source of truth
5. Record gaps, outdated sections, and inconsistencies
6. Propose prioritized actions with owners and timelines

## Example Invocation
- Ask your assistant: "/doc-audit: audit our docs and produce findings"
- Or run manually following the steps above

## Output
Create `docs/_working/audit-report-[date].md` including:
- Executive summary
- Gap analysis
- Prioritized recommendations with owners
- Suggested timeline and acceptance criteria
29 changes: 29 additions & 0 deletions .claude/commands/doc-structure.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Documentation Structure Command

> Rationale: Designing the structure first prevents duplication and ensures consistent navigation.

## When to Use
- At project start or major feature kickoff
- After a doc audit that identified gaps

## Inputs
- Requirements and audience notes
- Existing docs index and status files
- Available templates in `docs/templates/`

## Step-by-Step
1. Identify personas and their top tasks (developer, operator, PM)
2. Draft IA: index, status, architecture, guides, and cross-links
3. Map each section to a template (API, tutorial, how-to)
4. Define acceptance criteria and examples per section
5. Validate against SSOT: avoid duplicating information

## Example Invocation
- "/doc-structure: propose an IA and section plan for the new feature"

## Output
Generate `docs/_working/structure-plan.md` with:
- Outline and navigation
- Cross-reference map
- Template assignments
- Acceptance criteria and example lists
19 changes: 19 additions & 0 deletions .claude/commands/review-cycle.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Documentation Review Cycle Command

> Rationale: A repeatable review cycle ensures docs stay accurate and accessible.

## When to Use
- Before releases
- After major documentation changes

## Step-by-Step
1. Technical Accuracy: validate commands, code snippets, and configs
2. Content Quality: clarity, grammar, tone, and completeness
3. UX Review: navigation, headings, scannability, and search
4. Maintenance: ensure SSOT, remove duplicates, add cross-references

## Example Invocation
- "/review-cycle: run a full review and summarize findings"

## Output
Generate `docs/_working/review-report-[date].md` with findings and action items.
29 changes: 29 additions & 0 deletions .claude/output-style.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Documentation Output Style Configuration

Refer to the root `advanced_ia_doc_workflow.md` for the full version. This file scopes the core rules for this boilerplate.

## Structure Standards

### Document Hierarchy
```
# Primary Title (H1) - Document Purpose
## Major Section (H2) - Key Topics
### Subsection (H3) - Specific Concepts
#### Detail Section (H4) - Implementation Details
```

### Required Elements
- Introduction, Prerequisites, Main Content, Examples, Troubleshooting, Next Steps

## Content Guidelines
- Runnable, complete code examples with syntax highlighting
- Active voice, present tense; define terms on first use
- Use tables for structured comparisons

## MCP Tool Integration
- Always check existing docs before suggesting changes
- Maintain consistent naming conventions for files

## Context Efficiency
- Summarize long technical details; link to references in `docs/`
- Use reusable snippets where possible
9 changes: 9 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
root = true

[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 2

11 changes: 10 additions & 1 deletion .eslintrc.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
{
"extends": ["next/core-web-vitals", "next/typescript"]
"root": true,
"extends": ["next/core-web-vitals", "next/typescript"],
"ignorePatterns": [
".next/**",
"out/**",
"build/**",
"node_modules/**",
"dist/**",
"next-env.d.ts"
]
}
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,6 @@ yarn-error.log*
# typescript
*.tsbuildinfo
next-env.d.ts

# project management
docs/PROJECT_MANAGEMENT.md
23 changes: 23 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Dependencies
node_modules/

# Build outputs
.next/
out/
build/
dist/

# Generated files
next-env.d.ts
*.tsbuildinfo

# Lock files
yarn.lock
package-lock.json
pnpm-lock.yaml

# Public assets (don't format)
public/

# Coverage
coverage/
9 changes: 9 additions & 0 deletions .prettierrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"semi": false,
"singleQuote": false,
"printWidth": 100,
"tabWidth": 2,
"trailingComma": "es5",
"arrowParens": "always",
"endOfLine": "lf"
}
66 changes: 66 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

## Company Context

**Trees Software** is an umbrella company managing a portfolio of software projects including client work, internal SaaS products, and experimental projects. The company operates from Uruguay with a focus on modern web and mobile applications.

## Project Portfolio Structure

This repository serves as the master documentation and management hub for Trees Software. Individual project codebases are maintained in separate repositories. Key project categories:

- **🟢 Production & Live**: maicemita-site (e-commerce), personal-site (portfolio)
- **🟡 Active Development**: avent-properties (Next.js), linear-clone (Phoenix/Elixir + Next.js), train-uy (Next.js + Supabase), pomodoro (Flutter), radios-blog (Next.js + Supabase), trees-software
- **💼 Client Projects**: barber_time, fat_free_crm, Online-Booking-Management, nextjs-appointment-booking (Next.js/TypeScript)
- **🔧 Maintenance**: autox, advanced-react-patterns, project-manager, scrappers
- **🧪 Experimental**: ai-assistant-development-kit, docker containerization

## Technology Stack

### Primary Technologies
- **Frontend**: Next.js 15, React, TypeScript (90% coverage), TailwindCSS, shadcn/ui
- **Mobile**: Flutter 3.35.3, Dart 3.9.2
- **Backend**: Phoenix/Elixir, Node.js/Express, Supabase
- **Deployment**: Vercel (primary), various hosting solutions

### Project Standards
- TypeScript usage target: 90% of projects
- Testing coverage target: 65% of projects
- Documentation requirement: 90% of projects
- CI/CD setup target: 75% of projects

## Documentation Structure

All project management and company information is centralized in `/documentation/`:

- `PROJECT_MANAGEMENT.md` - Single source of truth for all project statuses, priorities, and technical details
- `readme.md` - Company mission, vision, values, and business model
- Additional business documents (presentations, accounting, etc.)

## Key Operating Principles

1. **Completion over Features**: Focus on finishing projects rather than adding new features
2. **Quality Standards**: Maintain high technical standards with proper documentation
3. **Client Satisfaction**: Target 95%+ client satisfaction rate
4. **Agile Development**: Fast, iterative development with clear priorities
5. **Modern Design**: Design-first approach with beautiful, user-friendly interfaces

## Current Priorities (High Priority Items)

1. Complete avent-properties platform features
2. Complete pomodoro app store submission
3. Finish linear-clone backend integration
4. Deploy train-uy MVP
5. Continue trees-software development

## Development Workflow

- Projects are tracked by completion percentage and priority level
- Weekly progress reviews on active development
- Monthly technology stack updates and security audits
- Regular client project status updates with delivery timelines

## Business Context

Trees Software operates as both a service provider (client development) and product company (internal SaaS). The company maintains a portfolio approach with multiple revenue streams including client contracts, SaaS subscriptions, and white-label solutions.
17 changes: 15 additions & 2 deletions app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,21 @@ const geistMono = localFont({
});

export const metadata: Metadata = {
title: "Create Next App",
description: "Generated by create next app",
title: "Trees Software - Custom Web & Mobile Development from Uruguay",
description: "Professional software development company from Uruguay. We transform your ideas into powerful web applications, mobile apps, and SaaS platforms. Expert developers delivering quality solutions worldwide.",
keywords: "software development, web development, mobile apps, Uruguay, custom software, SaaS, e-commerce",
authors: [{ name: "Trees Software" }],
openGraph: {
title: "Trees Software - Custom Development Solutions",
description: "Transform your ideas into powerful software solutions with Trees Software from Uruguay",
type: "website",
locale: "en_US",
},
twitter: {
card: "summary_large_image",
title: "Trees Software - Custom Development Solutions",
description: "Transform your ideas into powerful software solutions with Trees Software from Uruguay",
},
};

export default function RootLayout({
Expand Down
3 changes: 1 addition & 2 deletions components/footer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,9 @@ export function Footer() {
<footer className="bg-primary text-primary-foreground py-12 relative overflow-hidden">
<div className="absolute bottom-0 left-0 w-full h-32 opacity-20">
<svg
className="absolute bottom-0 w-full h-full"
className="absolute bottom-0 w-full h-full text-accent"
viewBox="0 0 1200 128"
fill="currentColor"
className="text-accent"
>
<path d="M0,128 L0,96 L20,80 L40,64 L60,48 L80,32 L100,48 L120,64 L140,80 L160,96 L180,80 L200,64 L220,48 L240,32 L260,16 L280,32 L300,48 L320,64 L340,80 L360,96 L380,80 L400,64 L420,48 L440,32 L460,48 L480,64 L500,80 L520,96 L540,80 L560,64 L580,48 L600,32 L620,16 L640,32 L660,48 L680,64 L700,80 L720,96 L740,80 L760,64 L780,48 L800,32 L820,48 L840,64 L860,80 L880,96 L900,80 L920,64 L940,48 L960,32 L980,16 L1000,32 L1020,48 L1040,64 L1060,80 L1080,96 L1100,80 L1120,64 L1140,80 L1160,96 L1180,112 L1200,128 Z" />
</svg>
Expand Down
58 changes: 18 additions & 40 deletions components/portfolio-section.tsx
Original file line number Diff line number Diff line change
@@ -1,50 +1,18 @@
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"
import { Button } from "@/components/ui/button"
import { ExternalLink } from "lucide-react"
import { loadPortfolioCopy, loadProjects } from "@/lib/projects"

const projects = [
{
title: "Maicemita Alfajores",
category: "E-commerce Platform",
description:
"Complete e-commerce solution for artisanal alfajores with online ordering, payment processing, and inventory management.",
image: "/alfajores-ecommerce-website.jpg",
status: "Live Production",
},
{
title: "BarberPro Management",
category: "Business Tools",
description:
"Comprehensive barber shop management system with appointment booking, client management, and payment tracking.",
image: "/barber-shop-management-dashboard.jpg",
status: "In Development",
},
{
title: "Portfolio Showcase",
category: "Professional Websites",
description: "Modern portfolio websites for creative professionals with dynamic galleries and contact management.",
image: "/creative-portfolio-website.png",
status: "Multiple Deployments",
},
{
title: "ReservaFácil",
category: "Booking System",
description:
"Multi-business reservation platform for restaurants, salons, and service providers with real-time availability.",
image: "/booking-reservation-system.jpg",
status: "Beta Testing",
},
]
const projects = loadProjects()
const copy = loadPortfolioCopy()

export function PortfolioSection() {
return (
<section id="portfolio" className="py-24 bg-background">
<div className="container">
<div className="text-center space-y-4 mb-16">
<h2 className="text-3xl md:text-4xl font-bold text-primary">Our Portfolio</h2>
<p className="text-lg text-muted-foreground max-w-2xl mx-auto text-pretty">
Real projects delivering real results for businesses across Latin America and beyond.
</p>
<h2 className="text-3xl md:text-4xl font-bold text-primary">{copy.title}</h2>
<p className="text-lg text-muted-foreground max-w-2xl mx-auto text-pretty">{copy.subtitle}</p>
</div>

<div className="grid grid-cols-1 md:grid-cols-2 gap-8">
Expand Down Expand Up @@ -74,12 +42,22 @@ export function PortfolioSection() {
{project.description}
</CardDescription>
<Button
asChild={Boolean(project.liveUrl)}
variant="outline"
size="sm"
className="group-hover:bg-accent group-hover:text-accent-foreground transition-colors bg-transparent"
>
View Details
<ExternalLink className="ml-2 h-4 w-4" />
{project.liveUrl ? (
<a href={project.liveUrl} target="_blank" rel="noreferrer noopener">
{copy.ctaVisitSite}
<ExternalLink className="ml-2 h-4 w-4" />
</a>
) : (
<span>
{copy.ctaViewDetails}
<ExternalLink className="ml-2 h-4 w-4" />
</span>
)}
</Button>
</CardContent>
</Card>
Expand All @@ -88,7 +66,7 @@ export function PortfolioSection() {

<div className="text-center mt-12">
<Button size="lg" className="bg-accent hover:bg-accent/90 text-accent-foreground">
View All Projects
{copy.ctaAllProjects}
</Button>
</div>
</div>
Expand Down
Loading