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
24 changes: 24 additions & 0 deletions apps/landing/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# build output
dist/
# generated types
.astro/

# dependencies
node_modules/

# logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*


# environment variables
.env
.env.production

# macOS-specific files
.DS_Store

# jetbrains setting folder
.idea/
4 changes: 4 additions & 0 deletions apps/landing/.vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"recommendations": ["astro-build.astro-vscode"],
"unwantedRecommendations": []
}
11 changes: 11 additions & 0 deletions apps/landing/.vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"version": "0.2.0",
"configurations": [
{
"command": "./node_modules/.bin/astro dev",
"name": "Development server",
"request": "launch",
"type": "node-terminal"
}
]
}
22 changes: 22 additions & 0 deletions apps/landing/AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
## Development

To start the local development server:

```bash
npm run dev
```

The server will run in the foreground at `http://localhost:4321`.

## Documentation

Full documentation: https://docs.astro.build

Consult these guides before working on related tasks:

- [Adding pages, dynamic routes, or middleware](https://docs.astro.build/en/guides/routing/)
- [Working with Astro components](https://docs.astro.build/en/basics/astro-components/)
- [Using React, Vue, Svelte, or other framework components](https://docs.astro.build/en/guides/framework-components/)
- [Adding or managing content](https://docs.astro.build/en/guides/content-collections/)
- [Adding styles or using Tailwind](https://docs.astro.build/en/guides/styling/)
- [Supporting multiple languages](https://docs.astro.build/en/guides/internationalization/)
22 changes: 22 additions & 0 deletions apps/landing/CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
## Development

To start the local development server:

```bash
npm run dev
```

The server will run in the foreground at `http://localhost:4321`.

## Documentation

Full documentation: https://docs.astro.build

Consult these guides before working on related tasks:

- [Adding pages, dynamic routes, or middleware](https://docs.astro.build/en/guides/routing/)
- [Working with Astro components](https://docs.astro.build/en/basics/astro-components/)
- [Using React, Vue, Svelte, or other framework components](https://docs.astro.build/en/guides/framework-components/)
- [Adding or managing content](https://docs.astro.build/en/guides/content-collections/)
- [Adding styles or using Tailwind](https://docs.astro.build/en/guides/styling/)
- [Supporting multiple languages](https://docs.astro.build/en/guides/internationalization/)
33 changes: 33 additions & 0 deletions apps/landing/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# urBackend Landing Page (Astro)

This is the static, SEO-optimized landing page for **urBackend** built using **Astro**, **React**, and **framer-motion**.

## 🚀 Getting Started

To run the development server locally:

```bash
npm run dev
```

The server will start at `http://localhost:4321/`.

## 📦 Project Structure

- `src/layouts/Base.astro`: Base layout file containing universal SEO settings, Meta tags, JSON-LD structured schemas, and Google Fonts.
- `src/pages/index.astro`: Main landing page built using mixed static markup and hydrated React islands.
- `src/pages/pricing.astro`: Pricing tier page.
- `src/components/`: Layout components (Navbar, Footer, StudioReplay, OrbitSection) and external graphic libraries like MagicBento and Hyperspeed.
- `src/styles/landing.css`: Bundled stylesheet representing the landing page design.
- `public/`: Public domain verification files, logos, and favicons.

## 🛠️ Build and Deploy

To test compiling the landing page locally:

```bash
npm run build
```

This compiles static production files directly to `./dist/`.
For deployment, refer to the project's root deployment plan mapping to Vercel subdomains.
11 changes: 11 additions & 0 deletions apps/landing/astro.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// @ts-check
import { defineConfig } from 'astro/config';

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

// https://astro.build/config
export default defineConfig({
site: 'https://urbackend.bitbros.in',
integrations: [react(), sitemap()]
});
26 changes: 26 additions & 0 deletions apps/landing/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"name": "landing",
"type": "module",
"version": "0.0.1",
"engines": {
"node": ">=20.0.0"
},
"scripts": {
"dev": "astro dev",
"build": "astro build",
"preview": "astro preview",
"astro": "astro"
},
"dependencies": {
"@astrojs/react": "^4.x",
"@astrojs/sitemap": "^3.x",
"astro": "^5.0.0",
"framer-motion": "^11.0.0",
"gsap": "^3.12.0",
"lucide-react": "^0.470.0",
"postprocessing": "^6.36.0",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"three": "^0.170.0"
}
}
Binary file added apps/landing/public/LOGO_SQ.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/landing/public/favicon.ico
Binary file not shown.
1 change: 1 addition & 0 deletions apps/landing/public/favicon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/landing/public/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions apps/landing/public/robots.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
User-agent: *
Allow: /

Sitemap: https://urbackend.bitbros.in/sitemap-index.xml
106 changes: 106 additions & 0 deletions apps/landing/src/components/BorderGlow/BorderGlow.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
.border-glow-card {
--edge-proximity: 0;
--cursor-angle: 45deg;
--edge-sensitivity: 30;
--color-sensitivity: calc(var(--edge-sensitivity) + 20);
--border-radius: 28px;
--glow-padding: 40px;
--cone-spread: 25;

position: relative;
border-radius: var(--border-radius);
isolation: isolate;
transform: translate3d(0, 0, 0.01px);
display: flex;
flex-direction: column;
border: 1px solid rgba(255, 255, 255, 0.08);
background: var(--card-bg, rgba(255, 255, 255, 0.02));
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
overflow: visible;
box-shadow:
rgba(0, 0, 0, 0.1) 0px 1px 2px,
rgba(0, 0, 0, 0.1) 0px 2px 4px,
rgba(0, 0, 0, 0.1) 0px 4px 8px,
rgba(0, 0, 0, 0.1) 0px 8px 16px,
rgba(0, 0, 0, 0.1) 0px 16px 32px,
rgba(0, 0, 0, 0.1) 0px 32px 64px;
}

.border-glow-card::before,
.border-glow-card > .edge-light {
content: "";
position: absolute;
inset: 0;
border-radius: inherit;
transition: opacity 0.25s ease-out;
z-index: -1;
}

.border-glow-card:not(:hover):not(.sweep-active)::before,
.border-glow-card:not(:hover):not(.sweep-active) > .edge-light {
opacity: 0;
transition: opacity 0.75s ease-in-out;
}

/* colored mesh-gradient border */
.border-glow-card::before {
border: 1px solid transparent;
background:
linear-gradient(#0c0a0f 0 100%) padding-box,
linear-gradient(rgba(255, 255, 255, 0) 0% 100%) border-box,
var(--gradient-one, radial-gradient(at 80% 55%, hsla(268, 100%, 76%, 1) 0px, transparent 50%)) border-box,
var(--gradient-two, radial-gradient(at 69% 34%, hsla(349, 100%, 74%, 1) 0px, transparent 50%)) border-box,
var(--gradient-three, radial-gradient(at 8% 6%, hsla(136, 100%, 78%, 1) 0px, transparent 50%)) border-box,
var(--gradient-four, radial-gradient(at 41% 38%, hsla(192, 100%, 64%, 1) 0px, transparent 50%)) border-box,
var(--gradient-five, radial-gradient(at 86% 85%, hsla(186, 100%, 74%, 1) 0px, transparent 50%)) border-box,
var(--gradient-six, radial-gradient(at 82% 18%, hsla(52, 100%, 65%, 1) 0px, transparent 50%)) border-box,
var(--gradient-seven, radial-gradient(at 51% 4%, hsla(12, 100%, 72%, 1) 0px, transparent 50%)) border-box,
var(--gradient-base, linear-gradient(#c299ff 0 100%)) border-box;
opacity: calc((var(--edge-proximity) - var(--color-sensitivity)) / (100 - var(--color-sensitivity)));
mask-image:
conic-gradient(
from var(--cursor-angle) at center,
black calc(var(--cone-spread) * 1%),
transparent calc((var(--cone-spread) + 15) * 1%),
transparent calc((100 - var(--cone-spread) - 15) * 1%),
black calc((100 - var(--cone-spread)) * 1%)
);
}

/* outer glow layer */
.border-glow-card > .edge-light {
inset: calc(var(--glow-padding) * -1);
pointer-events: none;
z-index: 1;
mask-image:
conic-gradient(
from var(--cursor-angle) at center, black 2.5%, transparent 10%, transparent 90%, black 97.5%
);
opacity: calc((var(--edge-proximity) - var(--edge-sensitivity)) / (100 - var(--edge-sensitivity)));
mix-blend-mode: plus-lighter;
}

.border-glow-card > .edge-light::before {
content: "";
position: absolute;
inset: var(--glow-padding);
border-radius: inherit;
box-shadow:
0 0 1px 0 var(--glow-color-60, hsl(40deg 80% 80% / 60%)),
0 0 3px 0 var(--glow-color-50, hsl(40deg 80% 80% / 50%)),
0 0 6px 0 var(--glow-color-40, hsl(40deg 80% 80% / 40%)),
0 0 15px 0 var(--glow-color-30, hsl(40deg 80% 80% / 30%)),
0 0 25px 2px var(--glow-color-20, hsl(40deg 80% 80% / 20%)),
0 0 50px 2px var(--glow-color-10, hsl(40deg 80% 80% / 10%));
}

.border-glow-inner {
display: flex;
flex-direction: column;
justify-content: space-between;
height: 100%;
width: 100%;
position: relative;
z-index: 1;
}
Loading
Loading