Skip to content

Commit f5d3c47

Browse files
committed
chore: configure pipeline
1 parent ffdfb7f commit f5d3c47

File tree

7 files changed

+170
-30
lines changed

7 files changed

+170
-30
lines changed

.prettierrc

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"semi": true,
3+
"trailingComma": "all",
4+
"singleQuote": false,
5+
"printWidth": 100,
6+
"tabWidth": 2,
7+
"useTabs": false,
8+
"bracketSpacing": true,
9+
"bracketSameLine": false,
10+
"arrowParens": "avoid",
11+
"endOfLine": "lf",
12+
"quoteProps": "as-needed"
13+
}

eslint.config.js

Lines changed: 94 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,104 @@ export default tseslint.config(
1818
"react-refresh": reactRefresh,
1919
},
2020
rules: {
21+
// Regras existentes do seu projeto
2122
...reactHooks.configs.recommended.rules,
2223
"react-refresh/only-export-components": [
2324
"warn",
2425
{ allowConstantExport: true },
2526
],
26-
"@typescript-eslint/no-unused-vars": "off",
27+
28+
// === AIRBNB STYLE GUIDE RULES ===
29+
30+
// Formatting
31+
"indent": ["error", 2, { SwitchCase: 1 }],
32+
"quotes": ["error", "single", { avoidEscape: true }],
33+
"semi": ["error", "always"],
34+
"comma-dangle": ["error", "always-multiline"],
35+
"object-curly-spacing": ["error", "always"],
36+
"array-bracket-spacing": ["error", "never"],
37+
"computed-property-spacing": ["error", "never"],
38+
"space-in-parens": ["error", "never"],
39+
"no-trailing-spaces": "error",
40+
"eol-last": ["error", "always"],
41+
"no-multiple-empty-lines": ["error", { max: 1, maxEOF: 0 }],
42+
"comma-spacing": ["error", { before: false, after: true }],
43+
"key-spacing": ["error", { beforeColon: false, afterColon: true }],
44+
"keyword-spacing": ["error", { before: true, after: true }],
45+
"space-before-blocks": "error",
46+
"space-infix-ops": "error",
47+
"space-unary-ops": ["error", { words: true, nonwords: false }],
48+
"spaced-comment": ["error", "always"],
49+
50+
// Function spacing
51+
"space-before-function-paren": ["error", {
52+
anonymous: "always",
53+
named: "never",
54+
asyncArrow: "always"
55+
}],
56+
"function-paren-newline": ["error", "multiline-arguments"],
57+
58+
// Braces and blocks
59+
"brace-style": ["error", "1tbs", { allowSingleLine: true }],
60+
"curly": ["error", "multi-line", "consistent"],
61+
"nonblock-statement-body-position": ["error", "beside"],
62+
63+
// Variable declarations
64+
"no-var": "error",
65+
"prefer-const": ["error", { destructuring: "any" }],
66+
"one-var": ["error", "never"],
67+
"no-unused-vars": "off",
68+
"@typescript-eslint/no-unused-vars": ["error", {
69+
argsIgnorePattern: "^_",
70+
varsIgnorePattern: "^_",
71+
caughtErrorsIgnorePattern: "^_"
72+
}],
73+
74+
// Arrow functions
75+
"prefer-arrow-callback": ["error", { allowNamedFunctions: false }],
76+
"arrow-spacing": "error",
77+
"arrow-parens": ["error", "as-needed"],
78+
79+
// Objects and arrays
80+
"object-shorthand": ["error", "always"],
81+
"quote-props": ["error", "as-needed"],
82+
"no-duplicate-imports": "error",
83+
84+
// Best practices
85+
"eqeqeq": ["error", "always", { null: "ignore" }],
86+
"no-eval": "error",
87+
"no-implied-eval": "error",
88+
"no-new-func": "error",
89+
"no-console": "warn",
90+
"no-debugger": "error",
91+
"no-alert": "warn",
92+
"radix": "error",
93+
"yoda": "error",
94+
95+
// Naming conventions
96+
"camelcase": ["error", {
97+
properties: "never",
98+
ignoreDestructuring: false,
99+
ignoreImports: false,
100+
ignoreGlobals: false
101+
}],
102+
103+
// TypeScript specific
104+
"@typescript-eslint/explicit-function-return-type": "off",
105+
"@typescript-eslint/explicit-module-boundary-types": "off",
106+
"@typescript-eslint/no-explicit-any": "warn",
107+
"@typescript-eslint/prefer-nullish-coalescing": "error",
108+
"@typescript-eslint/prefer-optional-chain": "error",
109+
"@typescript-eslint/no-non-null-assertion": "warn",
110+
111+
// Imports organization
112+
"sort-imports": ["error", {
113+
ignoreCase: false,
114+
ignoreDeclarationSort: true,
115+
ignoreMemberSort: false,
116+
memberSyntaxSortOrder: ["none", "all", "multiple", "single"],
117+
allowSeparatedGroups: true,
118+
}],
27119
},
28120
}
29-
);
121+
);

package-lock.json

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
"build": "vite build",
99
"build:dev": "vite build --mode development",
1010
"lint": "eslint .",
11+
"lint:fix": "eslint . --fix",
12+
"format": "prettier --write .",
13+
"format:check": "prettier --check .",
1114
"preview": "vite preview"
1215
},
1316
"dependencies": {
@@ -77,6 +80,7 @@
7780
"globals": "^15.15.0",
7881
"lovable-tagger": "^1.1.8",
7982
"postcss": "^8.5.6",
83+
"prettier": "^3.6.2",
8084
"tailwindcss": "^3.4.17",
8185
"typescript": "^5.8.3",
8286
"typescript-eslint": "^8.38.0",

src/components/Header.tsx

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,31 +12,43 @@ const Header = () => {
1212
};
1313

1414
return (
15-
<header className="border-b border-border backdrop-blur-sm sticky top-0 z-50" style={{ backgroundColor: 'hsl(var(--header-bg))' }}>
15+
<header
16+
className="border-b border-border backdrop-blur-sm sticky top-0 z-50"
17+
style={{ backgroundColor: "hsl(var(--header-bg))" }}
18+
>
1619
<div className="container mx-auto px-6 py-4">
1720
<div className="flex items-center justify-between">
1821
<div className="flex items-center">
1922
<Link to="/" className="hover:opacity-80 transition-opacity">
20-
<img
21-
src={deviLogo}
22-
alt="Devitools Logo"
23-
className={`h-11 object-contain ${theme !== "dark" ? "grayscale brightness-[0.6]" : ""}`}
23+
<img
24+
src={deviLogo}
25+
alt="Devitools Logo"
26+
className={`h-11 object-contain ${theme !== "dark" ? "grayscale brightness-[0.4]" : ""}`}
2427
/>
2528
</Link>
2629
</div>
27-
28-
<nav className="hidden md:flex items-center space-x-8">
29-
<a href="/constructo" className="text-muted-foreground hover:text-primary transition-colors">
30+
31+
<nav className="hidden lg:flex items-center space-x-8">
32+
<a
33+
href="/constructo"
34+
className="text-muted-foreground hover:text-primary transition-colors"
35+
>
3036
Constructo
3137
</a>
32-
<a href="/serendipity" className="text-muted-foreground hover:text-primary transition-colors">
38+
<a
39+
href="/serendipity"
40+
className="text-muted-foreground hover:text-primary transition-colors"
41+
>
3342
Serendipity
3443
</a>
35-
<a href="/effulgence" className="text-muted-foreground hover:text-primary transition-colors">
44+
<a
45+
href="/effulgence"
46+
className="text-muted-foreground hover:text-primary transition-colors"
47+
>
3648
Effulgence
3749
</a>
3850
<Link to="/docs" className="text-muted-foreground hover:text-primary transition-colors">
39-
Documentação
51+
Todas as Ferramentas
4052
</Link>
4153
</nav>
4254

@@ -59,4 +71,4 @@ const Header = () => {
5971
);
6072
};
6173

62-
export default Header;
74+
export default Header;

src/components/Hero.tsx

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,18 @@ const Hero = () => {
1010
<div className="flex items-center justify-center mb-6">
1111
<div className="flex items-center space-x-2 bg-primary/10 px-4 py-2 rounded-full">
1212
<Sparkles className="w-4 h-4 text-primary" />
13-
<span className="text-sm font-medium text-primary">Ferramentas PHP Modernas</span>
13+
<span className="text-sm font-medium text-primary">Ferramentas modernas para o desenvolvedor</span>
1414
</div>
1515
</div>
16-
16+
1717
<h1 className="text-5xl md:text-7xl font-bold mb-6 bg-gradient-hero bg-clip-text text-transparent leading-tight">
18-
Simplifique seu desenvolvimento PHP
18+
Simplifique seu ambiente de desenvolvimento
1919
</h1>
20-
20+
2121
<p className="text-xl md:text-2xl text-muted-foreground mb-8 max-w-3xl mx-auto">
22-
Ferramentas modernas e elegantes para acelerar seu workflow.
23-
Foque no que importa: as regras de negócio.
22+
Ferramentas modernas e elegantes para acelerar seu workflow. Foque no que importa: o negócio do cliente!
2423
</p>
25-
24+
2625
<div className="flex flex-col sm:flex-row gap-4 justify-center mb-12">
2726
<Button size="lg" className="bg-gradient-primary shadow-glow text-lg px-8 py-6">
2827
<Zap className="w-5 h-5 mr-2" />
@@ -34,24 +33,28 @@ const Hero = () => {
3433
Ver Exemplos
3534
</Button>
3635
</div>
37-
36+
3837
<div className="grid grid-cols-1 md:grid-cols-3 gap-8 mt-16">
3938
<div className="text-center">
4039
<div className="w-12 h-12 bg-gradient-primary rounded-xl mx-auto mb-4 flex items-center justify-center">
4140
<Code className="w-6 h-6 text-primary-foreground" />
4241
</div>
43-
<h3 className="text-lg font-semibold mb-2">Framework Agnóstico</h3>
44-
<p className="text-muted-foreground">Funciona com qualquer projeto PHP, sem amarras</p>
42+
<h3 className="text-lg font-semibold mb-2">Simples</h3>
43+
<p className="text-muted-foreground">
44+
Pensado para simplificar as stacks de desenvolvimento
45+
</p>
4546
</div>
46-
47+
4748
<div className="text-center">
4849
<div className="w-12 h-12 bg-gradient-accent rounded-xl mx-auto mb-4 flex items-center justify-center">
4950
<Zap className="w-6 h-6 text-accent-foreground" />
5051
</div>
51-
<h3 className="text-lg font-semibold mb-2">Performance</h3>
52-
<p className="text-muted-foreground">Otimizado para alta performance e baixo overhead</p>
52+
<h3 className="text-lg font-semibold mb-2">Performático</h3>
53+
<p className="text-muted-foreground">
54+
Otimizado para alta performance e baixo overhead
55+
</p>
5356
</div>
54-
57+
5558
<div className="text-center">
5659
<div className="w-12 h-12 bg-gradient-success rounded-xl mx-auto mb-4 flex items-center justify-center">
5760
<Sparkles className="w-6 h-6 text-success-foreground" />
@@ -66,4 +69,4 @@ const Hero = () => {
6669
);
6770
};
6871

69-
export default Hero;
72+
export default Hero;

src/pages/Index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import Footer from "@/components/Footer";
66

77
const Index = () => {
88
return (
9-
<div className="min-h-screen" style={{ background: 'var(--gradient-background)' }}>
9+
<div className="min-h-screen" style={{ background: "var(--gradient-background)" }}>
1010
<Header />
1111
<Hero />
1212
<Packages />

0 commit comments

Comments
 (0)