Skip to content

Commit aa97b8b

Browse files
committed
📝 doc: update readme and add LICENSE
1 parent c51136c commit aa97b8b

14 files changed

Lines changed: 298 additions & 90 deletions

File tree

LICENSE

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,18 @@
11
MIT License
22

3-
Copyright (c) 2025 Usman Haroon
3+
Copyright (c) 2025 Haroon
44

5-
Permission is hereby granted, free of charge, to any person obtaining a copy
6-
of this software and associated documentation files (the "Software"), to deal
7-
in the Software without restriction, including without limitation the rights
8-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9-
copies of the Software, and to permit persons to whom the Software is
5+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
6+
associated documentation files (the "Software"), to deal in the Software without restriction,
7+
including without limitation the rights to use, copy, modify, merge, publish, distribute,
8+
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
109
furnished to do so, subject to the following conditions:
1110

12-
The above copyright notice and this permission notice shall be included in all
13-
copies or substantial portions of the Software.
11+
The above copyright notice and this permission notice shall be included in all copies or substantial
12+
portions of the Software.
1413

15-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21-
SOFTWARE.
14+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
15+
NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
16+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES
17+
OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
18+
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

README.md

Lines changed: 53 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
## Ramify JS
1+
# Ramify JS
22

33
Reactive, in-memory database for in-process JavaScript applications.
44

@@ -9,43 +9,70 @@ lightweight, type-safe data store with live query observation for building react
99
> management, request-scoped caching, and transient state. Data is lost when the process or page is
1010
> terminated.
1111
12-
### Install
12+
## Documentation
13+
14+
[ramifyjs.pages.dev](https://ramifyjs.pages.dev) - Main documentation
15+
16+
## Development
17+
18+
This is a monorepo managed with pnpm workspaces.
1319

1420
```bash
15-
npm install ramify-js
16-
# or
17-
pnpm add ramify-js
18-
# or
19-
yarn add ramify-js
20-
```
21+
# Install dependencies
22+
pnpm install
2123

22-
### Usage
24+
# Build all packages
25+
pnpm build
2326

24-
```ts
25-
import /* your exported APIs */ 'ramify-js';
27+
# Run type checking
28+
pnpm type-check
2629

27-
// Example (replace with your actual API):
28-
// const db = createRamify();
29-
// const results = query(db, q => q.where(...));
30+
# Run linting
31+
pnpm lint
32+
33+
# Format code
34+
pnpm format
3035
```
3136

32-
Exports are available from the root entrypoint; see source files like `ramify.ts`, `query.ts`,
33-
`table.ts`, `observer.ts`, and `useLiveQuery.ts` for details until full API docs are added.
37+
# Contributing
38+
39+
Fork the Project
40+
41+
## Branching Strategy
3442

35-
### TypeScript
43+
- Feature branches: `feature/*`
44+
```bash
45+
git checkout -b feature/YOUR-BRANCH-NAME
46+
```
47+
- Bug fix branches: `fix/*`
48+
```bash
49+
git checkout -b fix/YOUR-BRANCH-NAME
50+
```
3651

37-
- ESM build with bundled type declarations.
38-
- Target Node 18+ and modern bundlers.
52+
## Commit Message Format
3953

40-
### Development
54+
All commits MUST follow this format:
4155

42-
- Build: `npm run build`
43-
- Entry: `index.ts` re-exports from local modules.
56+
```
57+
<gitmoji> type(scope): subject
58+
59+
[optional body]
60+
```
61+
62+
### Examples
63+
64+
```bash
65+
✨ feat(core): support for reactive queries
66+
🐛 fix(react): infinite loop in useLiveQuery
67+
📝 docs(app): update query api documentation
68+
```
4469

45-
### License
70+
## Development Workflow
4671

47-
MIT © Usman Haroon
72+
1. Create your Feature Branch `git checkout -b feature/YOUR-BRANCH-NAME` from the `main` branch
73+
2. Push to the Branch `git push origin feature/YOUR-BRANCH-NAME`
74+
3. Open a Pull Request against the `main` branch
4875

49-
### SCRATCHPAD
76+
## License
5077

51-
store └── collection └── document
78+
[LICENSE](/LICENSE)

app/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@ramifyjs/app",
3-
"version": "0.0.1",
3+
"version": "0.0.2",
44
"private": true,
55
"scripts": {
66
"dev": "next dev",

app/src/app/docs/loading.tsx

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
export default function DocsLoading() {
2+
return (
3+
<div className="space-y-8 animate-pulse">
4+
<div className="space-y-4">
5+
<div className="h-10 w-3/4 rounded-lg bg-foreground/5" />
6+
<div className="h-4 w-1/4 rounded bg-foreground/5" />
7+
</div>
8+
<div className="space-y-6">
9+
<div className="h-4 w-full rounded bg-foreground/5" />
10+
<div className="h-4 w-full rounded bg-foreground/5" />
11+
<div className="h-4 w-5/6 rounded bg-foreground/5" />
12+
</div>
13+
<div className="aspect-video w-full rounded-xl bg-foreground/5" />
14+
<div className="space-y-6">
15+
<div className="h-4 w-full rounded bg-foreground/5" />
16+
<div className="h-4 w-4/5 rounded bg-foreground/5" />
17+
</div>
18+
</div>
19+
);
20+
}

app/src/app/globals.css

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,22 @@
4141
--radius-md: calc(var(--radius) - 2px);
4242
--radius-lg: var(--radius);
4343
--radius-xl: calc(var(--radius) + 4px);
44+
45+
@keyframes blob {
46+
0% {
47+
transform: translate(0px, 0px) scale(1);
48+
}
49+
33% {
50+
transform: translate(30px, -50px) scale(1.1);
51+
}
52+
66% {
53+
transform: translate(-20px, 20px) scale(0.9);
54+
}
55+
100% {
56+
transform: translate(0px, 0px) scale(1);
57+
}
58+
}
59+
--animate-blob: blob 7s infinite;
4460
}
4561

4662
:root {

app/src/app/header.tsx

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,16 @@ import Image from 'next/image';
66
import { usePathname } from 'next/navigation';
77
import { useTheme } from 'next-themes';
88
import { cn } from '@/lib/utils';
9+
import * as React from 'react';
910

1011
export default function Header() {
1112
const { theme, resolvedTheme } = useTheme();
13+
const [mounted, setMounted] = React.useState(false);
14+
15+
React.useEffect(() => {
16+
setMounted(true);
17+
}, []);
18+
1219
const currentTheme = theme === 'system' ? resolvedTheme : theme;
1320
const pathname = usePathname();
1421
const isDocs = pathname.startsWith('/docs');
@@ -23,17 +30,21 @@ export default function Header() {
2330
isDocs && 'pl-8 lg:pl-0'
2431
)}
2532
>
26-
<Image
27-
src={currentTheme === 'dark' ? '/logo-dark.svg' : '/logo.svg'}
28-
alt="Ramify"
29-
width={120}
30-
height={32}
31-
/>
33+
{mounted ? (
34+
<Image
35+
src={currentTheme === 'dark' ? '/logo-dark.svg' : '/logo.svg'}
36+
alt="Ramify"
37+
width={120}
38+
height={32}
39+
/>
40+
) : (
41+
<div className="w-[120px] h-8" /> // Spacer to prevent layout shift
42+
)}
3243
</Link>
3344

3445
<nav className="flex items-center gap-6">
3546
<Link
36-
href="/docs"
47+
href="/docs/getting-started"
3748
className="text-sm hidden lg:inline-block font-medium text-muted-foreground transition-colors hover:text-foreground"
3849
>
3950
Documentation

app/src/app/page.tsx

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,21 @@ export default function Home() {
1313
<div className="absolute inset-0 bg-[linear-gradient(to_right,#80808012_1px,transparent_1px),linear-gradient(to_bottom,#80808012_1px,transparent_1px)] bg-size-[24px_24px] mask-[radial-gradient(ellipse_60%_50%_at_50%_0%,#000_70%,transparent_110%)]" />
1414
</div>
1515

16-
{/* Gradient Orbs */}
17-
<div className="pointer-events-none fixed inset-0 z-0">
18-
<div className="absolute left-1/4 top-0 h-[500px] w-[500px] animate-pulse rounded-full bg-foreground/5 blur-[120px]" />
19-
<div className="absolute bottom-0 right-1/4 h-[500px] w-[500px] animate-pulse rounded-full bg-foreground/5 blur-[120px] [animation-delay:2s]" />
16+
{/* Premium Background: Floating Orbs & Grain */}
17+
<div className="pointer-events-none fixed inset-0 z-0 overflow-hidden">
18+
{/* Noise/Grain Overlay */}
19+
<div
20+
className="absolute inset-0 opacity-[0.015] sm:opacity-[0.03] mix-blend-overlay"
21+
style={{
22+
backgroundImage: `url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E")`,
23+
}}
24+
/>
25+
26+
{/* Animated Orbs - Reduced/Hidden on mobile */}
27+
<div className="absolute -top-[10%] left-[10%] h-[300px] w-[300px] sm:h-[500px] sm:w-[500px] animate-blob rounded-full bg-blue-500/5 sm:bg-blue-500/10 blur-[80px] sm:blur-[120px] filter" />
28+
<div className="absolute top-[20%] -right-[5%] hidden sm:block h-[600px] w-[600px] animate-blob rounded-full bg-purple-500/10 blur-[120px] filter [animation-delay:2s]" />
29+
<div className="absolute -bottom-[10%] left-[20%] hidden sm:block h-[500px] w-[500px] animate-blob rounded-full bg-orange-500/10 blur-[120px] filter [animation-delay:4s]" />
30+
<div className="absolute bottom-[10%] right-[10%] h-[300px] w-[300px] sm:h-[400px] sm:w-[400px] animate-blob rounded-full bg-emerald-500/5 sm:bg-emerald-500/10 blur-[80px] sm:blur-[120px] filter [animation-delay:6s]" />
2031
</div>
2132

2233
<div className="relative z-10">
@@ -54,7 +65,7 @@ export default function Home() {
5465
</p>
5566

5667
<div className="flex flex-wrap items-center justify-center gap-4">
57-
<Link href="/docs">
68+
<Link href="/docs/getting-started">
5869
<Button
5970
size="lg"
6071
className="group cursor-pointer gap-2 bg-foreground px-8 py-6 text-base font-medium text-background transition-all hover:scale-105 hover:shadow-[0_0_40px_rgba(0,0,0,0.1)] dark:hover:shadow-[0_0_40px_rgba(255,255,255,0.1)]"
@@ -241,7 +252,7 @@ export default function Home() {
241252
</tr>
242253
</thead>
243254
<tbody className="divide-y divide-border/40">
244-
<tr className="transition-colors hover:bg-foreground/5">
255+
<tr className="transition-colors">
245256
<td className="px-6 py-4 font-medium">Primary Use</td>
246257
<td className="px-6 py-4 text-muted-foreground">
247258
App Data, Offline-capable state
@@ -250,17 +261,17 @@ export default function Home() {
250261
Caching, Data Transformations
251262
</td>
252263
</tr>
253-
<tr className="transition-colors hover:bg-foreground/5">
264+
<tr className="transition-colors">
254265
<td className="px-6 py-4 font-medium">Lifecycle</td>
255266
<td className="px-6 py-4 text-muted-foreground">Session-long</td>
256267
<td className="px-6 py-4 text-muted-foreground">Request or Process-scoped</td>
257268
</tr>
258-
<tr className="transition-colors hover:bg-foreground/5">
269+
<tr className="transition-colors">
259270
<td className="px-6 py-4 font-medium">Reactivity</td>
260271
<td className="px-6 py-4 text-muted-foreground">Real-time (Hooks)</td>
261272
<td className="px-6 py-4 text-muted-foreground">Event-driven (Observers)</td>
262273
</tr>
263-
<tr className="transition-colors hover:bg-foreground/5">
274+
<tr className="transition-colors">
264275
<td className="px-6 py-4 font-medium">Durability</td>
265276
<td className="px-6 py-4 text-muted-foreground">Pluggable (via Events)</td>
266277
<td className="px-6 py-4 text-muted-foreground">Pluggable (via Events)</td>
@@ -284,14 +295,14 @@ export default function Home() {
284295

285296
<div className="rounded-lg border border-border/70">
286297
<Image
287-
className="rounded-lg dark:hidden"
298+
className="h-auto w-full rounded-lg dark:hidden"
288299
src="/example-light.png"
289300
alt="Example"
290301
width={1024}
291302
height={1000}
292303
/>
293304
<Image
294-
className="hidden rounded-lg dark:block"
305+
className="hidden h-auto w-full rounded-lg dark:block"
295306
src="/example-dark.png"
296307
alt="Example"
297308
width={1024}
@@ -314,7 +325,7 @@ export default function Home() {
314325
Explore the documentation and start building high-performance, in-memory data
315326
workflows
316327
</p>
317-
<Link href="/docs">
328+
<Link href="/docs/getting-started">
318329
<Button
319330
size="lg"
320331
className="group gap-2 bg-foreground px-10 py-7 text-lg font-medium text-background transition-all hover:scale-105 hover:shadow-[0_0_50px_rgba(0,0,0,0.15)] dark:hover:shadow-[0_0_50px_rgba(255,255,255,0.15)]"

package.json

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
{
22
"name": "ramifyjs",
3-
"version": "0.0.1",
3+
"version": "0.0.2",
44
"private": true,
55
"keywords": [
6+
"ramify",
7+
"ramifyjs",
8+
"ramify-db",
69
"in-memory-database",
710
"reactive-database",
811
"live-query",
@@ -15,7 +18,9 @@
1518
"real-time-data",
1619
"state-management",
1720
"data-store",
18-
"memdb"
21+
"memdb",
22+
"nosql",
23+
"javascript"
1924
],
2025
"author": "Haroon (https://github.com/haroonwaves)",
2126
"license": "MIT",

packages/core/LICENSE copy

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
MIT License
2+
3+
Copyright (c) 2025 Haroon
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
6+
associated documentation files (the "Software"), to deal in the Software without restriction,
7+
including without limitation the rights to use, copy, modify, merge, publish, distribute,
8+
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
9+
furnished to do so, subject to the following conditions:
10+
11+
The above copyright notice and this permission notice shall be included in all copies or substantial
12+
portions of the Software.
13+
14+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
15+
NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
16+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES
17+
OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
18+
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

0 commit comments

Comments
 (0)