Skip to content
Merged
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
Binary file modified .gitignore
Binary file not shown.
8 changes: 4 additions & 4 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@ Workspace scripts are defined in [package.json](/package.json).

## Production Deployment Endpoints & Domains

- **Frontend Landing**: `https://urbackend.bitbros.in`
- **Dashboard App**: `https://app.urbackend.bitbros.in`
- **Dashboard API (Internal/Admin)**: `https://api.urbackend.bitbros.in`
- **Public API (SDK & User Auth)**: `https://api.ub.bitbros.in`
- **Frontend Landing**: `https://urbackend.in/`
- **Dashboard App**: `https://app.urbackend.in/`
- **Dashboard API (Internal/Admin)**: `https://platform-api.urbackend.in/`
- **Public API (SDK & User Auth)**: `https://api.urbackend.in/`

## Important project rules

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ const mongoose = require('mongoose');
function makeReq() {
return {
params: { projectId: 'proj_1', collectionName: 'posts', id: '507f1f77bcf86cd799439011' },
user: { _id: 'user_1' }
user: { _id: 'user_1' },
query: {}
};
}

Expand Down
9 changes: 7 additions & 2 deletions apps/landing/astro.config.mjs
Original file line number Diff line number Diff line change
@@ -1,17 +1,22 @@
// @ts-check
import { defineConfig } from 'astro/config';

import mdx from '@astrojs/mdx';
import react from '@astrojs/react';
import sitemap from '@astrojs/sitemap';
import vercel from '@astrojs/vercel';

// https://astro.build/config
export default defineConfig({
site: 'https://urbackend.bitbros.in',
site: 'https://urbackend.in',
redirects: {
'/sitemap.xml': '/sitemap-index.xml',
},
integrations: [
react(),
mdx(),
sitemap({
filter: (page) => page === 'https://urbackend.bitbros.in/',
filter: (page) => !page.includes('/404'),
}),
],
adapter: vercel()
Expand Down
1 change: 1 addition & 0 deletions apps/landing/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
"astro": "astro"
},
"dependencies": {
"@astrojs/mdx": "^4.x",
"@astrojs/react": "^4.x",
"@astrojs/sitemap": "^3.x",
"@astrojs/vercel": "^9.0.0",
Expand Down
1 change: 1 addition & 0 deletions apps/landing/public/badges/mintlify.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions apps/landing/public/badges/mongodb.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 2 additions & 1 deletion apps/landing/public/robots.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
User-agent: *
Allow: /

Sitemap: https://urbackend.bitbros.in/sitemap.xml
Sitemap: https://urbackend.in/sitemap-index.xml
Sitemap: https://urbackend.in/sitemap-0.xml
9 changes: 0 additions & 9 deletions apps/landing/public/sitemap.xml

This file was deleted.

151 changes: 151 additions & 0 deletions apps/landing/src/components/BlogCard.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,151 @@
---
import { ArrowRight, Calendar, User } from 'lucide-react';

interface Props {
slug: string;
title: string;
description: string;
date: Date | string;
author: string;
category: string;
tags?: string[];
}

const { slug, title, description, date, author, category, tags = [] } = Astro.props;

const formattedDate = new Date(date).toLocaleDateString('en-US', {
Comment thread
coderabbitai[bot] marked this conversation as resolved.
year: 'numeric',
month: 'short',
day: 'numeric',
timeZone: 'UTC',
});
---

<article class="blog-card">
<a href={`/blog/${slug}`} class="blog-card-link" aria-label={title}>
<div class="blog-card-header">
<span class="category-pill">{category}</span>
<span class="blog-date">
<Calendar size={13} />
{formattedDate}
</span>
</div>

<h2 class="blog-card-title">{title}</h2>
<p class="blog-card-desc">{description}</p>

<div class="blog-card-footer">
<div class="blog-author">
<User size={14} />
<span>{author}</span>
</div>
<span class="read-more">
Read article <ArrowRight size={14} />
</span>
</div>
</a>
</article>

<style>
.blog-card {
background: #080808;
border: 1px solid rgba(255, 255, 255, 0.08);
transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
display: flex;
flex-direction: column;
position: relative;
}

.blog-card:hover {
border-color: rgba(0, 245, 212, 0.3);
transform: translateY(-4px);
box-shadow: 0 12px 30px -10px rgba(0, 245, 212, 0.1);
}

.blog-card-link {
padding: 2rem;
display: flex;
flex-direction: column;
height: 100%;
text-decoration: none;
color: inherit;
}

.blog-card-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 1.25rem;
}

.category-pill {
font-size: 0.72rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.08em;
padding: 0.2rem 0.6rem;
background: rgba(0, 245, 212, 0.08);
border: 1px solid rgba(0, 245, 212, 0.2);
color: #00f5d4;
}

.blog-date {
display: flex;
align-items: center;
gap: 0.35rem;
font-size: 0.8rem;
color: #71717a;
font-family: 'JetBrains Mono', monospace;
}

.blog-card-title {
font-size: 1.35rem;
font-weight: 700;
color: #fff;
line-height: 1.3;
margin: 0 0 0.85rem;
letter-spacing: -0.015em;
}

.blog-card:hover .blog-card-title {
color: #00f5d4;
}

.blog-card-desc {
font-size: 0.95rem;
color: #a1a1aa;
line-height: 1.6;
margin: 0 0 2rem;
flex-grow: 1;
}

.blog-card-footer {
display: flex;
justify-content: space-between;
align-items: center;
padding-top: 1.25rem;
border-top: 1px solid rgba(255, 255, 255, 0.06);
}

.blog-author {
display: flex;
align-items: center;
gap: 0.45rem;
font-size: 0.85rem;
color: #71717a;
}

.read-more {
display: flex;
align-items: center;
gap: 0.35rem;
font-size: 0.85rem;
font-weight: 600;
color: #00f5d4;
transition: gap 0.2s ease;
}

.blog-card:hover .read-more {
gap: 0.55rem;
}
</style>
Loading
Loading