Skip to content
This repository was archived by the owner on Feb 4, 2026. It is now read-only.

Commit 03dda55

Browse files
committed
one
0 parents  commit 03dda55

31 files changed

+8218
-0
lines changed

.github/workflows/deploy.yml

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
name: Deploy to GitHub Pages
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
8+
permissions:
9+
contents: read
10+
pages: write
11+
id-token: write
12+
13+
jobs:
14+
build:
15+
runs-on: ubuntu-latest
16+
steps:
17+
- name: Checkout Repository
18+
uses: actions/checkout@v4
19+
20+
- name: Install Node.js
21+
uses: actions/setup-node@v3
22+
with:
23+
node-version: 18
24+
25+
- name: Install Dependencies
26+
run: cd encorpora-edu && npm install
27+
28+
- name: Build Static Files
29+
run: cd encorpora-edu && npm run build
30+
31+
- name: Upload Pages Artifact
32+
uses: actions/upload-pages-artifact@v3
33+
with:
34+
path: encorpora-edu/out
35+
36+
deploy:
37+
runs-on: ubuntu-latest
38+
needs: build
39+
environment:
40+
name: github-pages
41+
url: ${{ steps.deployment.outputs.page_url }}
42+
43+
steps:
44+
- name: Deploy to GitHub Pages
45+
id: deployment
46+
uses: actions/deploy-pages@v4

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# encorpora.io

encorpora-edu/.gitignore

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2+
3+
# dependencies
4+
/node_modules
5+
/.pnp
6+
.pnp.*
7+
.yarn/*
8+
!.yarn/patches
9+
!.yarn/plugins
10+
!.yarn/releases
11+
!.yarn/versions
12+
13+
# testing
14+
/coverage
15+
16+
# next.js
17+
/.next/
18+
/out/
19+
20+
# production
21+
/build
22+
23+
# misc
24+
.DS_Store
25+
*.pem
26+
27+
# debug
28+
npm-debug.log*
29+
yarn-debug.log*
30+
yarn-error.log*
31+
.pnpm-debug.log*
32+
33+
# env files (can opt-in for committing if needed)
34+
.env*
35+
36+
# vercel
37+
.vercel
38+
39+
# typescript
40+
*.tsbuildinfo
41+
next-env.d.ts

encorpora-edu/README.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
Supabase URL:
2+
3+
https://supabase.com/dashboard/project/oltimmufcpezjisfuqkb/editor/29033?schema=public
4+
5+
6+
7+
This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).
8+
9+
## Getting Started
10+
11+
First, run the development server:
12+
13+
```bash
14+
npm run dev
15+
# or
16+
yarn dev
17+
# or
18+
pnpm dev
19+
# or
20+
bun dev
21+
```
22+
23+
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
24+
25+
You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
26+
27+
This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
28+
29+
## Learn More
30+
31+
To learn more about Next.js, take a look at the following resources:
32+
33+
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
34+
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
35+
36+
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
37+
38+
## Deploy on Vercel
39+
40+
The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
41+
42+
Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.

encorpora-edu/app/books/page.tsx

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
"use client";
2+
3+
import { FC, useEffect, useState } from "react";
4+
import { Button } from "@/components/ui/button";
5+
import { supabase } from "@/lib/supabase";
6+
7+
// Define TypeScript types for books
8+
interface Book {
9+
id: string;
10+
title: string;
11+
description: string;
12+
link: string;
13+
}
14+
15+
const BooksPage: FC = () => {
16+
const [books, setBooks] = useState<Book[]>([]);
17+
const [loading, setLoading] = useState<boolean>(true);
18+
19+
useEffect(() => {
20+
const fetchBooks = async () => {
21+
setLoading(true);
22+
const { data, error } = await supabase.from("books").select("*");
23+
if (error) {
24+
console.error("Error fetching books:", error.message);
25+
} else {
26+
setBooks(data);
27+
}
28+
setLoading(false);
29+
};
30+
31+
fetchBooks();
32+
}, []);
33+
34+
return (
35+
<div className="min-h-screen bg-gray-100 flex flex-col items-center p-6">
36+
<h1 className="text-4xl font-bold text-center text-gray-900">All Books</h1>
37+
<p className="text-lg text-gray-700 text-center mt-4 max-w-2xl">
38+
Download high-quality educational resources for free.
39+
</p>
40+
41+
<div className="mt-8 w-full max-w-2xl bg-white shadow-md rounded-lg p-6">
42+
{loading ? (
43+
<p className="text-center text-gray-600">Loading books...</p>
44+
) : books.length === 0 ? (
45+
<p className="text-center text-gray-600">No books available.</p>
46+
) : (
47+
books.map((book) => (
48+
<div key={book.id} className="flex flex-col sm:flex-row justify-between items-start sm:items-center py-4 border-b last:border-b-0">
49+
<div>
50+
<h3 className="text-lg font-semibold text-gray-900">{book.title}</h3>
51+
<p className="text-gray-600">{book.description}</p>
52+
</div>
53+
<a href={book.link} target="_blank" rel="noopener noreferrer">
54+
<Button className="mt-3 sm:mt-0">Download</Button>
55+
</a>
56+
</div>
57+
))
58+
)}
59+
</div>
60+
61+
<footer className="mt-16 text-gray-500 text-sm">
62+
© {new Date().getFullYear()} Corpora Inc - All Rights Reserved.
63+
</footer>
64+
</div>
65+
);
66+
};
67+
68+
export default BooksPage;

encorpora-edu/app/globals.css

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
@tailwind base;
2+
@tailwind components;
3+
@tailwind utilities;
4+
5+
body {
6+
font-family: Arial, Helvetica, sans-serif;
7+
}
8+
9+
@layer base {
10+
:root {
11+
--background: 0 0% 100%;
12+
--foreground: 0 0% 3.9%;
13+
--card: 0 0% 100%;
14+
--card-foreground: 0 0% 3.9%;
15+
--popover: 0 0% 100%;
16+
--popover-foreground: 0 0% 3.9%;
17+
--primary: 0 0% 9%;
18+
--primary-foreground: 0 0% 98%;
19+
--secondary: 0 0% 96.1%;
20+
--secondary-foreground: 0 0% 9%;
21+
--muted: 0 0% 96.1%;
22+
--muted-foreground: 0 0% 45.1%;
23+
--accent: 0 0% 96.1%;
24+
--accent-foreground: 0 0% 9%;
25+
--destructive: 0 84.2% 60.2%;
26+
--destructive-foreground: 0 0% 98%;
27+
--border: 0 0% 89.8%;
28+
--input: 0 0% 89.8%;
29+
--ring: 0 0% 3.9%;
30+
--chart-1: 12 76% 61%;
31+
--chart-2: 173 58% 39%;
32+
--chart-3: 197 37% 24%;
33+
--chart-4: 43 74% 66%;
34+
--chart-5: 27 87% 67%;
35+
--radius: 0.5rem;
36+
}
37+
.dark {
38+
--background: 0 0% 3.9%;
39+
--foreground: 0 0% 98%;
40+
--card: 0 0% 3.9%;
41+
--card-foreground: 0 0% 98%;
42+
--popover: 0 0% 3.9%;
43+
--popover-foreground: 0 0% 98%;
44+
--primary: 0 0% 98%;
45+
--primary-foreground: 0 0% 9%;
46+
--secondary: 0 0% 14.9%;
47+
--secondary-foreground: 0 0% 98%;
48+
--muted: 0 0% 14.9%;
49+
--muted-foreground: 0 0% 63.9%;
50+
--accent: 0 0% 14.9%;
51+
--accent-foreground: 0 0% 98%;
52+
--destructive: 0 62.8% 30.6%;
53+
--destructive-foreground: 0 0% 98%;
54+
--border: 0 0% 14.9%;
55+
--input: 0 0% 14.9%;
56+
--ring: 0 0% 83.1%;
57+
--chart-1: 220 70% 50%;
58+
--chart-2: 160 60% 45%;
59+
--chart-3: 30 80% 55%;
60+
--chart-4: 280 65% 60%;
61+
--chart-5: 340 75% 55%;
62+
}
63+
}
64+
65+
@layer base {
66+
* {
67+
@apply border-border;
68+
}
69+
body {
70+
@apply bg-background text-foreground;
71+
}
72+
}

encorpora-edu/app/layout.tsx

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import type { Metadata } from "next";
2+
import { Geist, Geist_Mono } from "next/font/google";
3+
import "./globals.css";
4+
5+
// Load your fonts (adjust or remove if not using Geist)
6+
const geistSans = Geist({
7+
variable: "--font-geist-sans",
8+
subsets: ["latin"],
9+
});
10+
11+
const geistMono = Geist_Mono({
12+
variable: "--font-geist-mono",
13+
subsets: ["latin"],
14+
});
15+
16+
// Update metadata to reflect the purpose of your textbooks
17+
export const metadata: Metadata = {
18+
title: "Encorpora – Structured, No-Frills Textbooks",
19+
description:
20+
"Encorpora offers concise, systematic textbooks designed to help students fully grasp essential concepts—from early math standards to advanced CLEP exam prep. Each lesson is laser-focused, delivering exactly what learners need to master the material.",
21+
openGraph: {
22+
title: "Encorpora – Structured, No-Frills Textbooks",
23+
description:
24+
"We craft direct, distraction-free learning resources that ensure mastery of key topics. Our approach meets or exceeds grade-level expectations and prepares students thoroughly for college-level exams.",
25+
images: [
26+
{
27+
url: "https://encorpora.io/hexagon-logo-optimized.webp",
28+
width: 1200,
29+
height: 630,
30+
alt: "Encorpora Logo",
31+
},
32+
],
33+
},
34+
};
35+
36+
export default function RootLayout({
37+
children,
38+
}: {
39+
children: React.ReactNode;
40+
}) {
41+
return (
42+
<html lang="en">
43+
<body className={`${geistSans.variable} ${geistMono.variable} antialiased`}>
44+
{children}
45+
</body>
46+
</html>
47+
);
48+
}

0 commit comments

Comments
 (0)