Найден корректный robots.txt
Файл управления сканированием сайта роботами
?
Robots.txt указывает поисковым роботам, какие страницы сканировать, а какие — нет. Ошибки в файле могут случайно закрыть важные разделы от индексации.
Robots.txt настроен корректно. Размер файла: 12194 байт. Загружен за: 1сек.
Проверяемая страница не запрещена в robots.txt.
Цепочка редиректов для файла robots.txt:
http://compadre.us/robots.txt
301 MovedPermanently
https://compadre.us/robots.txt
200 OK
Показать содержимое robots.txt
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta property="og:image" content="https://jonreznick.com/img/b.jpg" />
<meta property="og:title" content="Competitive Advantage Research, LLC" />
<meta property="og:description" content="Software by Jon Reznick and Sam Hudis" />
<meta property="og:url" content="https://compadre.us" />
<link rel="icon" href="/favicon.ico">
<title>Competitive Advantage Research, LLC</title>
<style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
body {
font-family: system-ui, -apple-system, sans-serif;
background: #fff;
color: #111;
min-height: 100vh;
}
header {
padding: 0.625rem 2rem;
max-width: 1100px;
margin: 0 auto;
display: flex;
align-items: flex-start;
gap: 1.5rem;
}
header img {
display: block;
width: 180px;
flex-shrink: 0;
}
header p {
font-size: 0.95rem;
color: #444;
line-height: 1.6;
}
header a { color: #111; }
.filter-bar {
padding: 1.25rem 2rem;
max-width: 1100px;
margin: 0 auto;
display: flex;
flex-wrap: wrap;
gap: 0.5rem;
border-top: 1px solid #e8e8e8;
}
.filter-btn {
background: none;
border: 1px solid #ddd;
border-radius: 2px;
padding: 0.3rem 0.75rem;
font-size: 0.8rem;
font-family: inherit;
cursor: pointer;
color: #555;
transition: border-color 0.1s, color 0.1s, background 0.1s;
}
.filter-btn:hover { border-color: #999; color: #111; }
.filter-btn.active {
background: #111;
border-color: #111;
color: #fff;
}
.grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 1.25rem;
padding: 0 2rem 0.625rem;
max-width: 1100px;
margin: 0 auto;
}
@media (max-width: 959px) { .grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 599px) {
.grid { grid-template-columns: 1fr; padding: 0 1rem 0.625rem; }
header { padding: 0.625rem 1rem; flex-direction: column; gap: 0.625rem; }
.filter-bar { padding: 1.25rem 1rem; }
}
.card {
border: 1px solid #e0e0e0;
border-radius: 3px;
padding: 1.25rem;
display: flex;
flex-direction: column;
gap: 0.6rem;
text-decoration: none;
color: inherit;
transition: border-color 0.15s, opacity 0.2s;
}
.card:hover { border-color: #999; }
.card.hidden { opacity: 0.12; pointer-events: none; }
.card-name {
font-size: 1rem;
font-weight: 600;
color: #111;
text-decoration: underline;
text-underline-offset: 2px;
text-decoration-color: transparent;
transition: text-decoration-color 0.15s;
}
.card:hover .card-name { text-decoration-color: #111; }
.card-desc {
font-size: 0.875rem;
color: #555;
line-height: 1.5;
flex: 1;
}
.card-stack {
display: flex;
flex-wrap: wrap;
gap: 0.3rem;
}
.pill {
font-size: 0.7rem;
font-family: ui-monospace, monospace;
background: #f2f2f2;
color: #555;
padding: 0.2rem 0.45rem;
border-radius: 2px;
}
footer {
text-align: center;
padding: 0.625rem 2rem 1.25rem;
font-size: 0.8rem;
color: #999;
border-bottom: 1px solid #e8e8e8;
}
</style>
</head>
<body>
<header>
<img src="https://jonreznick.com/img/logo.jpg" alt="Compadre logo">
<p>Thanks for visiting Competitive Advantage Research. Competitive Advantage Research is <a href="mailto:jon@compadre.us">Jon Reznick</a> with <a href="mailto:sam@compadre.us">Sam Hudis</a>. Here are some demonstrations of our work. If you are prompted for an access code, please contact Jon to get one.</p>
</header>
<div class="filter-bar">
<button class="filter-btn active" data-filter="all">All</button>
<button class="filter-btn" data-filter="HTML/CSS">HTML/CSS</button>
<button class="filter-btn" data-filter="JavaScript">JavaScript</button>
<button class="filter-btn" data-filter="Python">Python</button>
<button class="filter-btn" data-filter="TypeScript">TypeScript</button>
<button class="filter-btn" data-filter="NextJS">NextJS</button>
<button class="filter-btn" data-filter="React">React</button>
<button class="filter-btn" data-filter="Docker">Docker</button>
<button class="filter-btn" data-filter="FFMPEG">FFMPEG</button>
<button class="filter-btn" data-filter="SQL">SQL</button>
<button class="filter-btn" data-filter="SVG">SVG</button>
<button class="filter-btn" data-filter="Jon">Jon</button>
<button class="filter-btn" data-filter="Sam">Sam</button>
</div>
<div class="grid">
<a class="card" href="https://apiary.compadre.us" target="_blank" data-stack="JavaScript,Python,HTML/CSS,Jon">
<div class="card-name">Apiary</div>
<div class="card-desc">A user interface for public APIs. (CORSProxy.io account not currently funded.)</div>
<div class="card-stack">
<span class="pill">JavaScript</span>
<span class="pill">Python</span>
<span class="pill">HTML/CSS</span>
<span class="pill">Jon</span>
</div>
</a>
<a class="card" href="https://calculary.compadre.us" target="_blank" data-stack="TypeScript,NextJS,Python,HTML/CSS,Jon">
<div class="card-name">Calculary</div>
<div class="card-desc">A strategy engine for investing, developed with Stephan Woodhouse.</div>
<div class="card-stack">
<span class="pill">TypeScript</span>
<span class="pill">NextJS</span>
<span class="pill">Python</span>
<span class="pill">HTML/CSS</span>
<span class="pill">Jon</span>
</div>
</a>
<a class="card" href="https://www.atlasizer.com/" target="_blank" data-stack="JavaScript,Python,HTML/CSS,Sam">
<div class="card-name">DataMapper</div>
<div class="card-desc">A mapping resource for public elections around the world, with a focus on NYC.</div>
<div class="card-stack">
<span class="pill">JavaScript</span>
<span class="pill">Python</span>
<span class="pill">HTML/CSS</span>
<span class="pill">Sam</span>
</div>
</a>
<a class="card" href="https://jonreznick.com" target="_blank" data-stack="HTML/CSS,JavaScript,SVG,Jon">
<div class="card-name">JonReznick.com</div>
<div class="card-desc">An exploration of stochastic animation leveraging Scalable Vector Graphics.</div>
<div class="card-stack">
<span class="pill">HTML/CSS</span>
<span class="pill">JavaScript</span>
<span class="pill">SVG</span>
<span class="pill">Jon</span>
</div>
</a>
<a class="card" href="https://github.com/jreznick/master-patient-index-main" target="_blank" data-stack="Python,SQL,Docker,Jon">
<div class="card-name">Master Patient Index</div>
<div class="card-desc">An open source repository for patient data management.</div>
<div class="card-stack">
<span class="pill">Python</span>
<span class="pill">SQL</span>
<span class="pill">Docker</span>
<span class="pill">Jon</span>
</div>
</a>
<a class="card" href="https://otacousticon.compadre.us" target="_blank" data-stack="Python,FFMPEG,HTML/CSS,Jon">
<div class="card-name">Otacousticon</div>
<div class="card-desc">A music decomposition via audio characteristic analysis.</div>
<div class="card-stack">
<span class="pill">Python</span>
<span class="pill">FFMPEG</span>
<span class="pill">HTML/CSS</span>
<span class="pill">Jon</span>
</div>
</a>
<a class="card" href="https://payanartist.com" target="_blank" data-stack="React,TypeScript,HTML/CSS,Jon">
<div class="card-name">PayAnArtist</div>
<div class="card-desc">A Stripe integration enabling merchandising opportunities for creators.</div>
<div class="card-stack">
<span class="pill">React</span>
<span class="pill">TypeScript</span>
<span class="pill">HTML/CSS</span>
<span class="pill">Jon</span>
</div>
</a>
<a class="card" href="https://perspicillum.compadre.us" target="_blank" data-stack="Python,JavaScript,React,SQL,HTML/CSS,Jon">
<div class="card-name">Perspicillum</div>
<div class="card-desc">Visualize your data model (via its Alembic migrations) as colorful UML using MermaidJS.</div>
<div class="card-stack">
<span class="pill">Python</span>
<span class="pill">JavaScript</span>
<span class="pill">React</span>
<span class="pill">SQL</span>
<span class="pill">HTML/CSS</span>
<span class="pill">Jon</span>
</div>
</a>
<a class="card" href="https://reporting.compadre.us" target="_blank" data-stack="JavaScript,TypeScript,HTML/CSS,Jon">
<div class="card-name">Reporting</div>
<div class="card-desc">A user interface for creating activity data to be collected by your team.</div>
<div class="card-stack">
<span class="pill">JavaScript</span>
<span class="pill">TypeScript</span>
<span class="pill">HTML/CSS</span>
<span class="pill">Jon</span>
</div>
</a>
<a class="card" href="https://status.compadre.us" target="_blank" data-stack="JavaScript,Jon">
<div class="card-name">Status</div>
<div class="card-desc">Service status for compadre.us services on this host.</div>
<div class="card-stack">
<span class="pill">JavaScript</span>
<span class="pill">Jon</span>
</div>
</a>
<a class="card" href="https://stratego.us" target="_blank" data-stack="TypeScript,React,JavaScript,NextJS,HTML/CSS,Jon">
<div class="card-name">Stratego</div>
<div class="card-desc">A classic boardgame of informational inequality.</div>
<div class="card-stack">
<span class="pill">TypeScript</span>
<span class="pill">React</span>
<span class="pill">NextJS</span>
<span class="pill">HTML/CSS</span>
<span class="pill">Jon</span>
</div>
</a>
<a class="card" href="https://symmachy.compadre.us" target="_blank" data-stack="Python,JavaScript,React,SQL,HTML/CSS,Jon">
<div class="card-name">Symmachy</div>
<div class="card-desc">A user interface out front of a data warehouse ingesting NYC Council business via its Legistar API.</div>
<div class="card-stack">
<span class="pill">Python</span>
<span class="pill">JavaScript</span>
<span class="pill">React</span>
<span class="pill">SQL</span>
<span class="pill">HTML/CSS</span>
<span class="pill">Jon</span>
</div>
</a>
<a class="card" href="https://undulax.compadre.us" target="_blank" data-stack="TypeScript,HTML/CSS,Jon">
<div class="card-name">Undulax</div>
<div class="card-desc">A cryptologically secure pseudorandom number generator modeled on LavaRAND.</div>
<div class="card-stack">
<span class="pill">TypeScript</span>
<span class="pill">HTML/CSS</span>
<span class="pill">Jon</span>
</div>
</a>
</div>
<footer>
<p>© <script>document.write(new Date().getFullYear())</script> Competitive Advantage Research, LLC</p>
</footer>
<script>
const btns = document.querySelectorAll('.filter-btn');
const cards = document.querySelectorAll('.card');
btns.forEach(btn => {
btn.addEventListener('click', () => {
btns.forEach(b => b.classList.remove('active'));
btn.classList.add('active');
const filter = btn.dataset.filter;
cards.forEach(card => {
if (filter === 'all') {
card.classList.remove('hidden');
} else {
const stack = card.dataset.stack.split(',');
card.classList.toggle('hidden', !stack.includes(filter));
}
});
});
});
</script>
</body>
</html>