Skip to content
Merged

Dev #15

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
52 changes: 52 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,62 @@ Thumbs.db
# Turbo
.turbo

# TypeScript
*.tsbuildinfo
# Dependencies
node_modules
.pnp
.pnp.js

# Testing
coverage
*.log

# Next.js
.next
out
build
dist

# Production
*.local

# Debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# OS
.DS_Store
*.pem
Thumbs.db

# IDE
.vscode
.idea
*.swp
*.swo
*~

# Environment
.env
.env.local
.env*.local

# Vercel
.vercel

# Turbo
.turbo

# TypeScript
*.tsbuildinfo


# PowerUp Account Docs
RestroFX PowerUp_Account_.md
RestroFX PowerUp_Account_.pdf

# Docs
docs/
docx_content.txt
170 changes: 83 additions & 87 deletions apps/web/app/account-types/[slug]/client-page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,87 @@ import { motion } from "framer-motion";
import { GlowCard } from "@/components/ui/glow-card";

export const accountDetails = {
powerup: {
id: "bonus", // for register link
"raw": {
id: "raw",
title: "RAW",
heroHeadline: "Raw market access. Institutional spreads.",
heroDescription: "The RAW account offers the most direct access to market liquidity. With spreads starting from 0.1 pips and a straightforward $18 RT commission, it's designed for serious traders, scalpers, and algos.",
whoItsFor: [
"Active and professional traders",
"Scalpers who need tight spreads to make their strategy work",
"Algo / EA traders running automated strategies",
"Anyone who wants the lowest cost of trading on every ticket"
],
whyTitle: "Why Traders Choose RAW",
whyContent: (
<ul className="grid grid-cols-1 gap-4">
{[
"Spreads from 0.1 pips on major pairs",
"Direct execution — pure liquidity",
"Up to 1:500 leverage across forex",
"$25 minimum deposit",
"EAs, scalping, and hedging all permitted"
].map((reason, i) => (
<li key={i} className="flex items-start gap-4 p-4 sm:p-5 rounded-2xl bg-muted/20 border border-border/40 hover:border-red-500/30 transition-all group">
<div className="w-8 h-8 rounded-full bg-red-600/10 flex items-center justify-center flex-shrink-0 group-hover:scale-110 transition-transform">
<CheckCircle2 className="w-5 h-5 text-red-600" />
</div>
<span className="text-foreground text-base sm:text-lg font-medium">{reason}</span>
</li>
))}
</ul>
),
specs: [
{ label: "Minimum deposit", value: "$25" },
{ label: "Commission", value: "$18.00 RT" },
{ label: "Spread", value: "From 0.1 pips" },
{ label: "Leverage", value: "Up to 1:500" },
{ label: "Negative balance protection", value: "Always on" },
{ label: "EAs / Scalping / Hedging", value: "All permitted" },
{ label: "Platform", value: "TradeLocker" },
]
},
"ecn-standard-default": {
id: "ecn-standard-default",
title: "ECN / Standard Default",
heroHeadline: "Trading made simple — competitive and flexible.",
heroDescription: "The Standard Default Account is built for the everyday retail trader. With a $25 minimum deposit, 1:500 leverage, and simple $4 RT commissions, it provides a balanced environment for all strategies.",
whoItsFor: [
"Traders who want a clean, no-frills account",
"Swing and position traders who hold longer-term setups",
"Anyone diversifying across forex, metals, indices, and crypto"
],
whyTitle: "Why Traders Choose Standard Default",
whyContent: (
<ul className="grid grid-cols-1 gap-4">
{[
"Spreads from 2.0 pips",
"Up to 1:500 leverage",
"$25 minimum deposit",
"Full instrument access — forex, metals, energies, indices, crypto",
"Reliable execution with fast fill quality"
].map((reason, i) => (
<li key={i} className="flex items-start gap-4 p-4 sm:p-5 rounded-2xl bg-muted/20 border border-border/40 hover:border-red-500/30 transition-all group">
<div className="w-8 h-8 rounded-full bg-red-600/10 flex items-center justify-center flex-shrink-0 group-hover:scale-110 transition-transform">
<CheckCircle2 className="w-5 h-5 text-red-600" />
</div>
<span className="text-foreground text-base sm:text-lg font-medium">{reason}</span>
</li>
))}
</ul>
),
specs: [
{ label: "Minimum deposit", value: "$25" },
{ label: "Commission", value: "$4.00 RT" },
{ label: "Spread", value: "From 2.0 pips" },
{ label: "Leverage", value: "Up to 1:500" },
{ label: "Negative balance protection", value: "Always on" },
{ label: "EAs / Scalping / Hedging", value: "All permitted" },
{ label: "Platform", value: "TradeLocker" },
]
},
"powerup": {
id: "bonus",
title: "PowerUp Account",
heroHeadline: "Deposit $5,000. Trade like you have $11,250.",
heroDescription: "The PowerUp Account gives you 125% extra buying power on every qualifying deposit — automatically. No challenge. No evaluation. No monthly fees. Just deposit and trade.",
Expand Down Expand Up @@ -66,99 +145,16 @@ export const accountDetails = {
</div>
),
specs: [
{ label: "Minimum deposit", value: "$250" },
{ label: "Minimum deposit", value: "$100" },
{ label: "Bonus", value: "125% buying power on every qualifying deposit" },
{ label: "Maximum bonus per cycle", value: "$6,250" },
{ label: "Commission", value: "$18 RT per lot" },
{ label: "Commission", value: "$18.00 RT" },
{ label: "Spread", value: "From 1.2 pips on majors" },
{ label: "Leverage (majors)", value: "Up to 1:100" },
{ label: "Execution", value: "Market execution" },
{ label: "Margin call / Stop-out", value: "100% / 70%" },
{ label: "Negative balance protection", value: "Always on" },
{ label: "Hedging", value: "Allowed" },
{ label: "Platform", value: "TradeLocker" },
]
},
"ecn-raw": {
id: "ecn-raw",
title: "ECN Raw",
heroHeadline: "Raw market access. No spread markup games.",
heroDescription: "ECN Raw is built for traders who care about execution: tight spreads from 0.0 pips, direct ECN routing, and a flat $6 per lot commission. What you see on the chart is what you trade.",
whoItsFor: [
"Active and professional traders",
"Scalpers who need tight spreads to make their strategy work",
"Algo / EA traders running automated strategies",
"Anyone who wants the lowest cost of trading on every ticket"
],
whyTitle: "Why Traders Choose ECN Raw",
whyContent: (
<ul className="grid grid-cols-1 gap-4">
{[
"Spreads from 0.0 pips on major pairs",
"Direct ECN execution — no dealing desk interference",
"Up to 1:1000 leverage across forex",
"$25 minimum deposit — no barrier to entry",
"EAs, scalping, and hedging all permitted"
].map((reason, i) => (
<li key={i} className="flex items-start gap-4 p-4 sm:p-5 rounded-2xl bg-muted/20 border border-border/40 hover:border-red-500/30 transition-all group">
<div className="w-8 h-8 rounded-full bg-red-600/10 flex items-center justify-center flex-shrink-0 group-hover:scale-110 transition-transform">
<CheckCircle2 className="w-5 h-5 text-red-600" />
</div>
<span className="text-foreground text-base sm:text-lg font-medium">{reason}</span>
</li>
))}
</ul>
),
specs: [
{ label: "Minimum deposit", value: "$25" },
{ label: "Commission", value: "$18 per lot" },
{ label: "Spread", value: "From 0.0 pips" },
{ label: "Leverage", value: "Up to 1:1000" },
{ label: "Execution", value: "ECN" },
{ label: "Negative balance protection", value: "Always on" },
{ label: "EAs / Scalping / Hedging", value: "All permitted" },
{ label: "Platform", value: "TradeLocker" },
]
},
standard: {
id: "standard",
title: "Standard Account",
heroHeadline: "Trading made simple — without compromise.",
heroDescription: "The Standard Account is the balanced option for traders who want flexibility, low entry, and access to every instrument we offer. Tight spreads, fast execution, and zero complexity.",
whoItsFor: [
"Traders who want a clean, no-frills account",
"Swing and position traders who hold longer-term setups",
"Anyone diversifying across forex, metals, indices, and crypto"
],
whyTitle: "Why Traders Choose Standard",
whyContent: (
<ul className="grid grid-cols-1 gap-4">
{[
"Spreads from 0.0 pips",
"Up to 1:1000 leverage",
"$25 minimum deposit",
"Full instrument access — forex, metals, energies, indices, crypto",
"Market execution with reliable fill quality"
].map((reason, i) => (
<li key={i} className="flex items-start gap-4 p-4 sm:p-5 rounded-2xl bg-muted/20 border border-border/40 hover:border-red-500/30 transition-all group">
<div className="w-8 h-8 rounded-full bg-red-600/10 flex items-center justify-center flex-shrink-0 group-hover:scale-110 transition-transform">
<CheckCircle2 className="w-5 h-5 text-red-600" />
</div>
<span className="text-foreground text-base sm:text-lg font-medium">{reason}</span>
</li>
))}
</ul>
),
specs: [
{ label: "Minimum deposit", value: "$25" },
{ label: "Commission", value: "$9 per lot" },
{ label: "Spread", value: "From 0.0 pips" },
{ label: "Leverage", value: "Up to 1:1000" },
{ label: "Execution", value: "Market" },
{ label: "Negative balance protection", value: "Always on" },
{ label: "EAs / Scalping / Hedging", value: "All permitted" },
{ label: "Platform", value: "TradeLocker" },
]
}
};

Expand Down
4 changes: 2 additions & 2 deletions apps/web/app/account-types/[slug]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ import { AccountDetailClient } from "./client-page";

export function generateStaticParams() {
return [
{ slug: "raw" },
{ slug: "ecn-standard-default" },
{ slug: "powerup" },
{ slug: "ecn-raw" },
{ slug: "standard" },
];
}

Expand Down
2 changes: 1 addition & 1 deletion apps/web/app/partners/ib/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ export default function IBProgramPage() {
const stats = [
{ value: "$5M+", label: "Paid to IBs" },
{ value: "200+", label: "Active IBs" },
{ value: "Up to $15", label: "Per Lot Rebate" },
{ value: "Up to $25", label: "Per Lot Rebate" },
{ value: "24/7", label: "IB Support" }
];

Expand Down
64 changes: 32 additions & 32 deletions apps/web/components/sections/account-types-section.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,39 +11,39 @@ import { TrendingUp, Zap, Shield, ArrowRight, Info, X, CheckCircle2 } from "luci

const accountTypes: AccountType[] = [
{
id: "bonus",
name: "PowerUp Account",
spread: "From 1.2 pips",
commission: "$18 RT per lot",
leverage: "Up to 1:100 (Majors)",
executionType: "Market",
minimumDeposit: "$250",
id: "raw",
name: "RAW",
spread: "From 0.1 pips",
commission: "$18.00 RT",
leverage: "Up to 1:500",
executionType: "Direct",
minimumDeposit: "$25",
},
{
id: "ecn-raw",
name: "ECN Raw",
spread: "From 0.0 pips",
commission: "$18 per lot",
leverage: "Up to 1:1000",
executionType: "ECN",
id: "ecn-standard-default",
name: "ECN / Standard Default",
spread: "From 2.0 pips",
commission: "$4.00 RT",
leverage: "Up to 1:500",
executionType: "Standard",
minimumDeposit: "$25",
popular: true,
},
{
id: "standard",
name: "Standard Account",
spread: "From 0.0 pips",
commission: "$9 per lot",
leverage: "Up to 1:1000",
executionType: "Market",
minimumDeposit: "$25",
id: "bonus",
name: "PowerUp Account",
spread: "From 1.2 pips",
commission: "$18.00 RT",
leverage: "Up to 1:100 (Majors)",
executionType: "Standard",
minimumDeposit: "$100",
},
];

const accountIcons: Record<string, typeof Zap> = {
raw: Zap,
"ecn-standard-default": TrendingUp,
bonus: Zap,
"ecn-raw": TrendingUp,
standard: Shield,
};

export function AccountTypesSection() {
Expand Down Expand Up @@ -97,7 +97,7 @@ export function AccountTypesSection() {
<motion.div
whileHover={{ y: -4 }}
transition={{ type: "spring", stiffness: 300 }}
className="relative"
className="relative h-full"
>
{account.popular && (
<div className="absolute -top-4 left-1/2 transform -translate-x-1/2 z-30">
Expand Down Expand Up @@ -133,9 +133,7 @@ export function AccountTypesSection() {
<div
className={`absolute inset-0 opacity-0 group-hover:opacity-100 transition-opacity duration-300 ${account.popular ? "opacity-100" : ""}`}
style={{
background: account.popular
? 'linear-gradient(to bottom right, rgba(220, 38, 38, 0.08), rgba(0, 0, 0, 0.12), rgba(220, 38, 38, 0.08))'
: 'linear-gradient(to bottom right, rgba(220, 38, 38, 0.08), rgba(0, 0, 0, 0.12), rgba(220, 38, 38, 0.08))'
background: 'linear-gradient(to bottom right, rgba(220, 38, 38, 0.08), rgba(0, 0, 0, 0.12), rgba(220, 38, 38, 0.08))'
}}
/>

Expand All @@ -149,9 +147,9 @@ export function AccountTypesSection() {
{account.name}
</CardTitle>
<p className="text-xs sm:text-sm text-muted-foreground">
{account.id === "bonus" ? "Trade bigger from day one" :
account.id === "ecn-raw" ? "Raw spreads. Direct execution." :
"All-in-one access for every trader"}
{account.id === "raw" ? "Raw spreads. Direct execution." :
account.id === "ecn-standard-default" ? "All-around trading with competitive conditions" :
"Trade bigger from day one"}
</p>
</div>
</div>
Expand All @@ -163,7 +161,6 @@ export function AccountTypesSection() {
{ label: "Spread", value: account.spread },
{ label: "Commission", value: account.commission },
{ label: "Leverage", value: account.leverage },
{ label: "Execution", value: account.executionType },
{ label: "Min. Deposit", value: account.minimumDeposit },
...(account.id === "bonus" ? [{ label: "Bonus", value: "125% buying power" }] : [])
].map((item, idx) => (
Expand All @@ -182,7 +179,7 @@ export function AccountTypesSection() {
</div>
</CardContent>

<CardFooter className="relative z-10 pt-2 pb-6 px-4 sm:px-6 flex flex-col gap-3 flex-shrink-0">
<CardFooter className="relative z-10 pt-2 pb-6 px-4 sm:px-6 flex flex-col gap-3 flex-shrink-0 mt-auto">
<Button
className={`w-full rounded-full h-12 sm:h-14 text-base sm:text-lg font-bold transition-all duration-500 ${account.popular
? "bg-primary hover:bg-red-700 shadow-[0_20px_50px_rgba(220,38,38,0.2)] hover:shadow-[0_30px_60px_rgba(220,38,38,0.3)] text-white hover:-translate-y-1"
Expand Down Expand Up @@ -210,7 +207,10 @@ export function AccountTypesSection() {

{account.id === "bonus" && (
<button
onClick={() => setIsModalOpen(true)}
onClick={(e) => {
e.stopPropagation();
setIsModalOpen(true);
}}
className="flex items-center justify-center gap-2 text-sm font-semibold text-red-600 hover:text-red-700 transition-colors py-2"
>
<Info className="h-4 w-4" />
Expand Down
Loading
Loading