Skip to content

Commit c4dbc98

Browse files
docs: add minimal Privlog landing page for GitHub Pages
Adds docs/index.html to serve as a minimal landing page for the project. Includes: - installation instructions - a basic usage example - CI/CD integration explanation This page will be used for the GitHub Pages site (privlog.dev) to provide a simple entry point for developers discovering the project.
1 parent 9ee14f2 commit c4dbc98

1 file changed

Lines changed: 200 additions & 0 deletions

File tree

docs/index.html

Lines changed: 200 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,200 @@
1+
<!doctype html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="utf-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1">
6+
<title>Privlog</title>
7+
<meta name="description" content="A Python CLI that detects sensitive data in logs before it reaches production.">
8+
<style>
9+
:root {
10+
--bg: #0b0b0b;
11+
--panel: #111111;
12+
--text: #f3f0e8;
13+
--muted: #b8b0a0;
14+
--accent: #e6c44f;
15+
--border: #262626;
16+
}
17+
* { box-sizing: border-box; }
18+
body {
19+
margin: 0;
20+
font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif;
21+
background: var(--bg);
22+
color: var(--text);
23+
line-height: 1.6;
24+
}
25+
.wrap {
26+
max-width: 880px;
27+
margin: 0 auto;
28+
padding: 48px 20px 72px;
29+
}
30+
.brand {
31+
display: inline-block;
32+
border: 1px solid var(--border);
33+
color: var(--accent);
34+
padding: 10px 14px;
35+
border-radius: 12px;
36+
font-weight: 700;
37+
letter-spacing: 0.04em;
38+
margin-bottom: 20px;
39+
}
40+
a.brand-link { text-decoration: none; }
41+
h1 {
42+
font-size: clamp(2.2rem, 6vw, 4rem);
43+
line-height: 1.05;
44+
margin: 0 0 16px;
45+
}
46+
p.lead {
47+
font-size: 1.1rem;
48+
color: var(--muted);
49+
max-width: 720px;
50+
margin: 0 0 28px;
51+
}
52+
.actions {
53+
display: flex;
54+
gap: 12px;
55+
flex-wrap: wrap;
56+
margin: 0 0 36px;
57+
}
58+
.btn {
59+
display: inline-block;
60+
padding: 12px 16px;
61+
border-radius: 12px;
62+
text-decoration: none;
63+
border: 1px solid var(--border);
64+
color: var(--text);
65+
background: var(--panel);
66+
}
67+
.btn.primary {
68+
background: var(--accent);
69+
color: #111;
70+
border-color: var(--accent);
71+
font-weight: 700;
72+
}
73+
.card {
74+
background: var(--panel);
75+
border: 1px solid var(--border);
76+
border-radius: 16px;
77+
padding: 20px;
78+
margin: 18px 0;
79+
}
80+
h2 {
81+
margin: 0 0 10px;
82+
font-size: 1.2rem;
83+
}
84+
pre {
85+
position: relative;
86+
margin: 0;
87+
overflow-x: auto;
88+
background: #0e0e0e;
89+
border: 1px solid var(--border);
90+
border-radius: 12px;
91+
padding: 14px;
92+
color: #f5e7a8;
93+
}
94+
.copy-btn {
95+
position: absolute;
96+
top: 10px;
97+
right: 10px;
98+
background: #222;
99+
border: 1px solid var(--border);
100+
color: var(--muted);
101+
cursor: pointer;
102+
border-radius: 6px;
103+
padding: 4px 8px;
104+
opacity: 0.5;
105+
transition: opacity 0.2s;
106+
}
107+
pre:hover .copy-btn {
108+
opacity: 1;
109+
}
110+
code { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }
111+
ul {
112+
margin: 8px 0 0 18px;
113+
padding: 0;
114+
}
115+
footer {
116+
margin-top: 40px;
117+
color: var(--muted);
118+
font-size: 0.95rem;
119+
}
120+
a { color: var(--accent); }
121+
</style>
122+
</head>
123+
<body>
124+
<main class="wrap">
125+
<a class="brand-link" href="https://github.com/privlog-dev/privlog">
126+
<div class="brand">PL</div>
127+
</a>
128+
<h1>Privlog</h1>
129+
<p class="lead">
130+
A Python CLI that detects sensitive data in logs before it reaches production.
131+
</p>
132+
133+
<div class="actions">
134+
<a class="btn primary" href="https://pypi.org/project/privlog/">Install from PyPI</a>
135+
<a class="btn" href="https://github.com/privlog-dev/privlog">View on GitHub</a>
136+
</div>
137+
138+
<section class="card">
139+
<h2>Install</h2>
140+
<pre><code id="install-command">pip install privlog</code><button class="copy-btn" onclick="copyCommand('install-command', event)">Copy</button></pre>
141+
</section>
142+
143+
<section class="card">
144+
<h2>Run</h2>
145+
<pre><code id="run-command">privlog .</code><button class="copy-btn" onclick="copyCommand('run-command', event)">Copy</button></pre>
146+
</section>
147+
148+
<section class="card">
149+
<h2>What it checks</h2>
150+
<ul>
151+
<li>Sensitive identifiers passed into logging calls</li>
152+
<li>Risky <code>print()</code> statements</li>
153+
<li>Custom logging wrappers configured through <code>pyproject.toml</code></li>
154+
<li>Common logging patterns that may expose sensitive data</li>
155+
</ul>
156+
</section>
157+
158+
<section class="card">
159+
<h2>Example</h2>
160+
<pre><code>app.py:12:9 [ERROR] PL2101 Sensitive identifier passed to log. Hash/pseudonymize or omit.</code></pre>
161+
</section>
162+
163+
<section class="card">
164+
<h2>CI/CD Integration</h2>
165+
<p>
166+
Privlog exits with a non-zero status code when high-confidence
167+
<code>ERROR</code> findings are detected, allowing CI/CD pipelines
168+
to fail fast when sensitive logging patterns appear.
169+
</p>
170+
</section>
171+
172+
<section class="card">
173+
<h2>Why it exists</h2>
174+
<p>
175+
Logs are useful for operators and developers, but sensitive data often gets logged during debugging and accidentally survives into production workflows.
176+
Privlog helps catch those patterns early.
177+
</p>
178+
</section>
179+
180+
<footer>
181+
Privlog is open source under the MIT License.
182+
GitHub: <a href="https://github.com/privlog-dev/privlog">privlog-dev/privlog</a>
183+
</footer>
184+
</main>
185+
186+
<script>
187+
function copyCommand(elementId, event) {
188+
const button = event.target;
189+
const text = document.getElementById(elementId).innerText;
190+
191+
navigator.clipboard.writeText(text).then(() => {
192+
button.innerText = "Copied!";
193+
setTimeout(() => {
194+
button.innerText = "Copy";
195+
}, 1500);
196+
});
197+
}
198+
</script>
199+
</body>
200+
</html>

0 commit comments

Comments
 (0)