Files
falah-mobile/prisma/dev.db.bak
T

698 lines
432 KiB
Plaintext
Raw Normal View History

SQLite format 3@ blZPb.vˆâ`ûöñìçâX×ê)¹¹/Cindexsqlite_autoindex_Purchase_1Purchase„< ˆOtableListingListing CREATE TABLE "Listing" (
"id" TEXT NOT NULL PRIMARY KEY,
"title" TEXT NOT NULL,
"description" TEXT NOT NULL,
"category" TEXT NOT NULL,
"priceFlh" INTEGER NOT NULL,
"sellerId" TEXT NOT NULL,
"status" TEXT NOT NULL DEFAULT 'active',
"featured" BOOLEAN NOT NULL DEFAULT false,
"featuredUntil" DATETIME,
"fileType" TEXT,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "Listing_sellerId_fkey" FOREIGN KEY ("sellerId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
)- Aindexsqlite_autoindex_Listing_1Listing
| …GtableUserLevelUserLevel
CREATE TABLE "UserLevel" (
"userId" TEXT NOT NULL PRIMARY KEY,
"level" INTEGER NOT NULL DEFAULT 1,
"xp" INTEGER NOT NULL DEFAULT 0,
"xpToNext" INTEGER NOT NULL DEFAULT 100,
"updatedAt" DATETIME NOT NULL,
CONSTRAINT "UserLevel_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
)1
Eindexsqlite_autoindex_UserLevel_1UserLevel ƒ##…}tableAchievementAchievementCREATE TABLE "Achievement" (
"id" TEXT NOT NULL PRIMARY KEY,
"userId" TEXT NOT NULL,
"type" TEXT NOT NULL,
"title" TEXT NOT NULL,
"description" TEXT,
"icon" TEXT,
"unlockedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "Achievement_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
)5I#indexsqlite_autoindex_Achievement_1Achievement ''…=tableXpTransactionXpTransactionCREATE TABLE "XpTransaction" (
"id" TEXT NOT NULL PRIMARY KEY,
"userId" TEXT NOT NULL,
"amount" INTEGER NOT NULL,
"reason" TEXT NOT NULL,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "XpTransaction_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
)9M'indexsqlite_autoindex_XpTransaction_1XpTransactionƒt##‡/tableDailyStreakDailyStreakCREATE TABLE "DailyStreak" (
"userId" TEXT NOT NULL PRIMARY KEY,
"currentStreak" INTEGER NOT NULL DEFAULT 0,
"longestStreak" INTEGER NOT NULL DEFAULT 0,
"lastClaimDate" DATETIME,
"streakFreeze" INTEGER NOT NULL DEFAULT 0,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" DATETIME NOT NULL,
CONSTRAINT "DailyStreak_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
)5I#indexsqlite_autoindex_DailyStreak_1DailyStreakgtableUserUserCREATE TABLE "User" (
"id" TEXT NOT NULL PRIMARY KEY,
"email" TEXT NOT NULL,
"name" TEXT NOT NULL,
"passwordHash" TEXT,
"provider" TEXT NOT NULL DEFAULT 'email',
"providerId" TEXT,
"avatar" TEXT,
"flhBalance" INTEGER NOT NULL DEFAULT 5000,
"isPro" BOOLEAN NOT NULL DEFAULT false,
"isPremium" BOOLEAN NOT NULL DEFAULT false,
"experienceLevel" TEXT,
"madhab" TEXT,
"coachPersona" TEXT,
"preferredName" TEXT,
"coachingGoals" TEXT,
"lastCoachedAt" DATETIME,
"dailyMsgCount" INTEGER NOT NULL DEFAULT 0,
"dailyMsgResetAt" DATETIME,
"stripeCustomerId" TEXT,
"stripeSubscriptionId" TEXT,
"trialEndsAt" DATETIME,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
)';indexsqliteQXHK/>'
C¡C\?5!cmqqdgkax0001119vcbhvs5xfdemo-buyer@falah.appDemo BuyeremailÃPžóŽ¿É]?7#cmqqdgka40000119vo5
ÅãÅ?cmqqdgkax0001119vcbhvs5xf? cmqqdgka40000119vo5h390x4




ãã ? cmqqdgkdj000f119v4mhy6q67
ãã? cmqqdgkbj0003119v1d49hcz8
ãã? cmqqdgka40000119vo5h390x4
X ÊÏ
œ ß
a
¨Xêê¹¹/Cindexsqlite_autoindex_Purchase_1Purchase- Aindexsqlite_autoindex_Listing_1Listing
ø?ˆOtableListingListing CREATE TABLE "Listing" (
"id" TEXT NOT NULL PRIMARY KEY,
"title" TEXT NOT NULL,
"description" TEXT NOT NULL,
"category" TEXT NOT NULL,
"priceFlh" INTEGER NOT NULL,
"sellerId" TEXT NOT NULL,
"status" TEXT NOT NULL DEFAULT 'active',
"featured" BOOLEAN NOT NULL DEFAULT false,
"featuredUntil" DATETIME,
"fileType" TEXT,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "Listing_sellerId_fkey" FOREIGN KEY ("sellerId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
)1
Eindexsqlite_autoindex_UserLevel_1UserLevel | …GtableUserLevelUserLevel
CREATE TABLE "UserLevel" (
"userId" TEXT NOT NULL PRIMARY KEY,
"level" INTEGER NOT NULL DEFAULT 1,
"xp" INTEGER NOT NULL DEFAULT 0,
"xpToNext" INTEGER NOT NULL DEFAULT 100,
"updatedAt" DATETIME NOT NULL,
CONSTRAINT "UserLevel_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
##…}tableAchievementAchievementCREATE TABLE "Achievement" (
"id" TEXT NOT NULL PRIMARY KEY,
"userId" TEXT NOT NULL,
"type" TEXT NOT NULL,
"title" TEXT NOT NULL,
"description" TEXT,
"icon" TEXT,
"unlockedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "Achievement_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
)5I#indexsqlite_autoindex_Achievement_1Achievement ''…=tableXpTransactionXpTransactionCREATE TABLE "XpTransaction" (
"id" TEXT NOT NULL PRIMARY KEY,
"userId" TEXT NOT NULL,
"amount" INTEGER NOT NULL,
"reason" TEXT NOT NULL,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "XpTransaction_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
)9M'indexsqlite_autoindex_XpTransaction_1XpTransactionƒt##‡/tableDailyStreakDailyStreakCREATE TABLE "DailyStreak" (
"userId" TEXT NOT NULL PRIMARY KEY,
"currentStreak" INTEGER NOT NULL DEFAULT 0,
"longestStreak" INTEGER NOT NULL DEFAULT 0,
"lastClaimDate" DATETIME,
"streakFreeze" INTEGER NOT NULL DEFAULT 0,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" DATETIME NOT NULL,
CONSTRAINT "DailyStreak_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
)5I#indexsqlite_autoindex_DailyStreak_1DailyStreakgtableUserUserCREATE TABLE "User" (
"id" TEXT NOT NULL PRIMARY KEY,
"email" TEXT NOT NULL,
"name" TEXT NOT NULL,
"passwordHash" TEXT,
"provider" TEXT NOT NULL DEFAULT 'email',
"providerId" TEXT,
"avatar" TEXT,
"flhBalance" INTEGER NOT NULL DEFAULT 5000,
"isPro" BOOLEAN NOT NULL DEFAULT false,
"isPremium" BOOLEAN NOT NULL DEFAULT false,
"experienceLevel" TEXT,
"madhab" TEXT,
"coachPersona" TEXT,
"preferredName" TEXT,
"coachingGoals" TEXT,
"lastCoachedAt" DATETIME,
"dailyMsgCount" INTEGER NOT NULL DEFAULT 0,
"dailyMsgResetAt" DATETIME,
"stripeCustomerId" TEXT,
"stripeSubscriptionId" TEXT,
"trialEndsAt" DATETIME,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
)';indexsqlite_autoindex_User_1User
f ¼n)13¼úY Q Q Q M  )=indexsqlite_autoindex_Group_1Group†;##Œ=tableForumThreadForumThreadCREATE TABLE "ForumThread" (
"id" TEXT NOT NULL PRIMARY KEY,
"title" TEXT NOT NULL,
"content" TEXT NOT NULL,
"categoryId" TEXT NOT NULL,
"authorId" TEXT NOT NULL,
"pinned" BOOLEAN NOT NULL DEFAULT false,
"shariahStatus" TEXT NOT NULL DEFAULT 'pending',
"shariahFlags" TEXT,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
"groupId" TEXT,
CONSTRAINT "ForumThread_categoryId_fkey" FOREIGN KEY ("categoryId") REFERENCES "ForumCategory" ("id") ON DELETE RESTRICT ON UPDATE CASCADE,
CONSTRAINT "ForumThread_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE,
CONSTRAINT "ForumThread_groupId_fkey" FOREIGN KEY ("groupId") REFERENCES "Group" ("id") ON DELETE SET NULL ON UPDATE CASCADE
)5I#indexsqlite_autoindex_ForumThread_1ForumThread''ƒ=tableForumCategoryForumCategoryCREATE TABLE "ForumCategory" (
"id" TEXT NOT NULL PRIMARY KEY,
"name" TEXT NOT NULL,
"description" TEXT,
"icon" TEXT,
"order" INTEGER,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
)9M'indexsqlite_autoindex_ForumCategory_1ForumCategoryƒ8))†+tableCashoutRequestCashoutRequestCREATE TABLE "CashoutRequest" (
"id" TEXT NOT NULL PRIMARY KEY,
"userId" TEXT NOT NULL,
"amountFlh" INTEGER NOT NULL,
"fiatAmount" REAL NOT NULL,
"status" TEXT NOT NULL DEFAULT 'pending',
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "CashoutRequest_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
);O)indexsqlite_autoindex_CashoutRequest_1CashoutRequestë/Cindexsqlite_autoindex_Purchase_1Purchase²atablePurchasePurchaseCREATE TABLE "Purchase" (
"id" TEXT NOT NULL PRIMARY KEY,
"listingId" TEXT NOT NULL,
"buyerId" TEXT NOT NULL,
"sellerId" TEXT NOT NULL,
"amountFlh" INTEGER NOT NULL,
"platformFee" INTEGER NOT NULL,
"sellerPayout" INTEGER NOT NULL,
"autoConfirmAt" DATETIME NOT NULL,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "Purchase_listingId_fkey" FOREIGN KEY ("listingId") REFERENCES "Listing" ("id") ON DELETE RESTRICT ON UPDATE CASCADE,
CONSTRAINT "Purchase_buyerId_fkey" FOREIGN KEY ("buyerId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE,
CONSTRAINT "Purchase_sellerId_fkey" FOREIGN KEY ("sellerId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
)¨Aindexsqlite_autoindex_Listing_1Listing
(ˆOtableListingListing CREATE TABLE "Listing" (
1E5I#indexsqlite_autoindex_GroupMember_1GroupMember##‡QtableGroupMemberGroupMemberCREATE TABLE "GroupMember" (
"id" TEXT NOT NULL PRIMARY KEY,
"groupId" TEXT NOT NULL,
"userId" TEXT NOT NULL,
"role" TEXT NOT NULL DEFAULT 'member',
"joinedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "GroupMember_groupId_fkey" FOREIGN KEY ("groupId") REFERENCES "Group" ("id") ON DELETE RESTRICT ON UPDATE CASCADE,
CONSTRAINT "GroupMember_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
))=indexsqlite_autoindex_Group_1Groupy…QtableGroupGroupCREATE TABLE "Group" (
"id" TEXT NOT NULL PRIMARY KEY,
"name" TEXT NOT NULL,
"description" TEXT,
"ownerId" TEXT NOT NULL,
"inviteCode" TEXT NOT NULL,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "Group_ownerId_fkey" FOREIGN KEY ("ownerId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
)







û-ÈÁÁ7*K%indexsqlite_autoindex_DhikrSession_1DhikrSession.K'++MtableHalalPlaceCacheHalalPlaceCache+CRE=(K'++MtableHalalPlaceCacheHalalPlaceCache+CREATE TABLE "HalalPlaceCache" (
"id" TEXT NOT NULL PRIMARY KEY,
"cacheKey" TEXT NOT NULL,
"data" TEXT NOT NULL,
"expiresAt" DATETIME NOT NULL
);&O)indexsqlite_autoindex_PremiumBenefit_1PremiumBenefit*ƒB!%%†GtableNotificationNotification%CREATE TABLE "Notification" (
"id" TEXT NOT NULL PRIMARY KEY,
"userId" TEXT NOT NULL,
"type" TEXT NOT NULL,
"title" TEXT NOT NULL,
"body" TEXT,
"data" TEXT,
"read" BOOLEAN NOT NULL DEFAULT false,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "Notification_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
)7"K%indexsqlite_autoindex_Notification_1Notification&\!!tableHalalUsageHalalUsage#CREATE TABLE "HalalUsage" (
"userId" TEXT NOT NULL PRIMARY KEY,
"queriesUsed" INTEGER NOT NULL DEFAULT 0,
"queriesLimit" INTEGER NOT NULL DEFAULT 100,
"periodEnd" DATETIME,
CONSTRAINT "HalalUsage_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
)3 G!indexsqlite_autoindex_HalalUsage_1HalalUsage$ƒ''…_tableHalalBookmarkHalalBookmark!CREATE TABLE "HalalBookmark" (
"id" TEXT NOT NULL PRIMARY KEY,
"userId" TEXT NOT NULL,
"itemId" TEXT NOT NULL,
"itemType" TEXT NOT NULL,
"label" TEXT,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "HalalBookmark_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
)9M'indexsqlite_autoindex_HalalBookmark_1HalalBookmark"ƒ##…WtableChatHistoryChatHistoryCREATE TABLE "ChatHistory" (
"id" TEXT NOT NULL PRIMARY KEY,
"userId" TEXT NOT NULL,
"role" TEXT NOT NULL,
"content" TEXT NOT NULL,
"metadata" TEXT,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "ChatHistory_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
)5I#indexsqlite_autoindex_ChatHistory_1ChatHistory ã1Eindexsqlite_autoindex_ForumPost_1ForumPost„KˆetableForumPostForumPostCREATE TABLE "ForumPost" (
"id" TEXT NOT NULL PRIMARY KEY,
"content" TEXT NOT NULL,
"threadId" TEXT NOT NULL,
"authorId" TEXT NOT NULL,
"shariahStatus" TEXT NOT NULL DEFAULT 'pending',
"shariahFlags" TEXT,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "ForumPost_threadId_fkey" FOREIGN KEY ("threadId") REFERENCES "ForumThread" ("id") ON DELETE RESTRICT ON UPDATE CASCADE,
CONSTRAINT "ForumPost_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
)'I#indexsqlite_autoindex_Gro;&O)3%))„!tablePremiumBenefitPremiumBenefit)CREATE TABLE "PremiumBenefit" (
"id" TEXT NOT NULL PRIMARY KEY,
"tier" TEXT NOT NULL,
"name" TEXT NOT NULL,
"description" TEXT,
"icon" TEXT,
"active" BOOLEAN NOT NULL DEFAULT true,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
)/$Cindexsqlite_autoindex_Referral_1Referral(5I#indexsqlite_autoindex_GroupMember_1GroupMember„U#ˆ}tableReferralReferral'CREATE TABLE "Referral" (
"id" TEXT NOT NULL PRIMARY KEY,
"referrerId" TEXT NOT NULL,
"referredId" TEXT NOT NULL,
"status" TEXT NOT NULL DEFAULT 'pending',
"rewardFlh" INTEGER NOT NULL DEFAULT 0,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
"upgradedAt" DATETIME,
CONSTRAINT "Referral_referrerId_fkey" FOREIGN KEY ("referrerId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE,
CONSTRAINT "Referral_referredId_fkey" FOREIGN KEY ("referredId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
)









­
tþ
C§)±A·>Ó@ÐX È
õ
Ži ÿ Ê Êƒl=‡'tableUserPlaceUserPlaceBCREATE TABLE "UserPlace" (
"id" TEXT NOT NULL PRIMARY KEY,
"userId" TEXT NOT NULL,
"name" TEXT NOT NULL,
"address" TEXT NOT NULL,
"lat" REAL NOT NULL,
"lng" REAL NOT NULL,
"type" TEXT NOT NULLƒl=‡'tableUserPlaceUserPlaceBCREATE TABLE "UserPlace" (
"id" TEXT NOT NULL PRIMARY KEY,
"userId" TEXT NOT NULL,
"name" TEXT NOT NULL,
"address" TEXT NOT NULL,
"lat" REAL NOT NULL,
"lng" REAL NOT NULL,
"type" TEXT NOT NULL,
"notes" TEXT,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" DATETIME NOT NULL,
CONSTRAINT "UserPlace_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
)v6='indexHalalBookmark_userId_idxHalalBookmark;CREATE INDEX "HalalBookmark_userId_idx" ON "HalalBookmark"("userId")n59#
indexChatHistory_userId_idxChatHistory:CREATE INDEX "ChatHistory_userId_idx" ON "ChatHistory"("userId")4I#AindexGroupMember_groupId_userId_keyGroupMember9CREATE UNIQUE INDEX "GroupMember_groupId_userId_key" ON "GroupMember"("groupId", "userId")i35indexGroup_inviteCode_keyGroup8CREATE UNIQUE INDEX "Group_inviteCode_key" ON "Group"("inviteCode")w29'indexForumCategory_name_keyForumCategory7CREATE UNIQUE INDEX "ForumCategory_name_key" ON "ForumCategory"("name")1C#5indexAchievement_userId_type_keyAchievement6CREATE UNIQUE INDEX "Achievement_userId_type_key" ON "Achievement"("userId", "type")n09#
indexAchievement_userId_idxAchievement5CREATE INDEX "Achievement_userId_idx" ON "Achievement"("userId")v/='indexXpTransaction_userId_idxXpTransaction4CREATE INDEX "XpTransaction_userId_idx" ON "XpTransaction"("userId")|.E+indexUser_provider_providerId_idxUser3CREATE INDEX "User_provider_providerId_idx" ON "User"("provider", "providerId")U-){indexUser_email_keyUser2CREATE UNIQUE INDEX "User_email_key" ON "User"("email")„B+ˆWtableDhikrDayDhikrDay0CREATE TABLE "DhikrDay" (
"userId" TEXT NOT NULL,
"date" TEXT NOT NULL,
"subhanallah" INTEGER NOT NULL DEFAULT 0,
"alhamdulillah" INTEGER NOT NULL DEFAULT 0,
"allahuakbar" INTEGER NOT NULL DEFAULT 0,
"custom" INTEGER NOT NULL DEFAULT 0,
"totalCount" INTEGER NOT NULL DEFAULT 0,
"sessionCount" INTEGER NOT NULL DEFAULT 0,
"updatedAt" DATETIME NOT NULL,
PRIMARY KEY ("userId", "date"),
CONSTRAINT "DhikrDay_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
)/,Cindexsqlite_autoindex_DhikrDay_1DhikrDay17*K%indexsqlite_autoindex_DhikrSession_1DhikrSession.ƒ[)%%†ytableDhikrSessionDhikrSession-CREATE TABLE "DhikrSession" (
"id" TEXT NOT NULL PRIMARY KEY,
"userId" TEXT NOT NULL,
"type" TEXT NOT NULL,
"count" INTEGER NOT NULL DEFAULT 0,
"target" INTEGER NOT NULL DEFAULT 33,
"completed" BOOLEAN NOT NULL DEFAULT true,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "DhikrSession_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
)
Q+in1>Eindexsqlite_autoindex_UserPlace_1UserPlaceC7E%+indexNotification_userId_read_idxNotification<CREATE INDEX "Notification_userId_read_idx" ON "Notification"("userId", "read")=(Q+indexsqlite_autoindex_HalalPlaceCache_1HalalPlaceCache,b<3indexDhikrDay_userId_idxDhikrDayACREATE INDEX "DhikrDay_userId_idx" ON "DhikrDay"("userId")L P;O%?indexDhikrSession_userId_createdAt_idxDhikrSession@CREATE INDEX "DhikrSession_userId_createdAt_idx" ON "DhikrSession"("userId", "createdAt") :E+3indexHalalPlaceCache_cacheKey_keyHalalPlaceCache?CREATE UNIQUE INDEX "HalalPlaceCache_cacheKey_key" ON "HalalPlaceCache"("cacheKey")n9;indexReferral_referrerId_idxReferral>CREATE INDEX "Referral_referrerId_idx" ON "Referral"("referrerId")u8;indexReferral_referredId_keyReferral=CREATE UNIQUE INDEX "Referral_referredId_key" ON "Referral"("referredId")


ÎÎç5demo-buyer@falah.app7 demo-seller@falah.app
ëöë
email  email

















ãã? cmqqdgkdy000h119vu9olxfh8
Ún« g 6 Ñ o+Ý 8¦¦55LI#indexsqlite_autoindex_LearnModule_1LearnModuleP…I##‰ctableLearnCourseLearnCourseMCREATE TABLE "LearnCourse" (
"id" TE„@K##ˆGtableLearnModuleLearnModuleOCREATE TABLE "LearnModule" (
"id" TEXT NOT NULL PRIMARY KEY,
"courseId" TEXT NOT NULL,
"order" INTEGER NOT NULL,
"title" TEXT NOT NULL,
"slug" TEXT NOT NULL,
"keyTakeaway" TEXT,
"duration" INTEGER NOT NULL DEFAULT 5,
"content" TEXT,
"audioPath" TEXT,
"quizData" TEXT,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" DATETIME NOT NULL,
CONSTRAINT "LearnModule_courseId_fkey" FOREIGN KEY ("courseId") REFERENCES "LearnCourse" ("id") ON DELETE CASCADE ON UPDATE CASCADE
)†*CŒ+tableListingListingICREATE TABLE "Listing" (
"id" TEXT NOT NULL PRIMARY KEY,
"title" TEXT NOT NULL,
"description" TEXT NOT NULL,
"category" TEXT NOT NULL,
"subcategory" TEXT,
"priceFlh" INTEGER NOT NULL,
"packages" TEXT,
"tags" TEXT,
"images" TEXT,
"deliveryDays" INTEGER,
"rating" REAL NOT NULL DEFAULT 0,
"reviewCount" INTEGER NOT NULL DEFAULT 0,
"salesCount" INTEGER NOT NULL DEFAULT 0,
"sellerId" TEXT NOT NULL,
"status" TEXT NOT NULL DEFAULT 'active',
"featured" BOOLEAN NOT NULL DEFAULT false,
"featuredUntil" DATETIME,
"fileType" TEXT,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "Listing_sellerId_fkey" FOREIGN KEY ("sellerId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
)
èI#K-DAindexsqlite_autoindex_Listing_1ListingJ+B?indexsqlite_autoindex_Review_1ReviewG†AktableReviewReviewFCREATE TABLE "Review" (
"id" TEXT NOT NULL PRIMARY KEY,
"listingId" TEXT NOT NULL,
"purchaseId" TEXT NOT NULL,
"reviewerId" TEXT NOT NULL,
"sellerId" TEXT NOT NULL,
"rating" INTEGER NOT NULL,
"title" TEXT,
"text" TEXT NOT NULL,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" DATETIME NOT NULL,
CONSTRAINT "Review_listingId_fkey" FOREIGN KEY ("listingId") REFERENCES "Listing" ("id") ON DELETE RESTRICT ON UPDATE CASCADE,
CONSTRAINT "Review_purchaseId_fkey" FOREIGN KEY ("purchaseId") REFERENCES "Purchase" ("id") ON DELETE RESTRICT ON UPDATE CASCADE,
CONSTRAINT "Review_reviewerId_fkey" FOREIGN KEY ("reviewerId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
)l@7indexUserPlace_lat_lng_idxUserPlaceECREATE INDEX "UserPlace_lat_lng_idx" ON "UserPlace"("lat", "lng")f?5indexUserPlace_userId_idxUserPlaceDCREATE INDEX "UserPlace_userId_idx" ON "UserPlace"("userId")‡Eindexsqlite_autoindex_UserPlace_1UserPlaceCL‡'tableUserPlaceUserP5JI#indexsqlite_autoindex_LearnCourse_1LearnCourseN`H3indexReview_sellerId_idxReviewCREATE INDEX "Review_sellerId_idx" ON "Review"("sellerId")cG5indexReview_listingId_idxReviewCREATE INDEX "Review_listingId_idx" ON "Review"("listingId")/FCindexsqlite_autoindex_Purchase_1Purchase
EtablePurchasePurchase CREATE TABLE "Purchase" (
"id" TEXT NOT NULL PRIMARY KEY,
"listingId" TEXT NOT NULL,
"buyerId" TEXT NOT NULL,
"sellerId" TEXT NOT NULL,
"packageName" TEXT,
"amountFlh" INTEGER NOT NULL,
"platformFee" INTEGER NOT NULL,
"sellerPayout" INTEGER NOT NULL,
"status" TEXT NOT NULL DEFAULT 'pending',
"messages" TEXT,
"deliveryFiles" TEXT,
"autoConfirmAt" DATETIME,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" DATETIME NOT NULL,
CONSTRAINT "Purchase_listingId_fkey" FOREIGN KEY ("listingId") REFERENCES "Listing" ("id") ON DELETE RESTRICT ON UPDATE CASCADE,
CONSTRAINT "Purchase_buyerId_fkey" FOREIGN KEY ("buyerId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE,
CONSTRAINT "Purchase_sellerId_fkey" FOREIGN KEY ("sellerId") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
)ûLû‡u?7ƒY+%ˆ
?cmqqdgkc30007119voai4ow16SEO Blog Post PackageResearch-backed, SEO-optimized blog content tailored to your niche. Each article includes keyword research, meta descriptions, internal linking suggestions, and a featured image brief. Plagiarism-free with Grammarly certification.Content WritingBlog Writingˆ[{"name":"Basic","description":"1 x 800-word blog post with basic keyword optimization and meta description.","price":3000,"deliveryDays":2,"revisions":1},{"name":"Standard","description":"3 x 1200-word blog posts with comprehensive keyword strategy, headings, and image briefs.","price":8000,"deliveryDays":5,"revisions":2},{"name":"Premium","description":"6 x 1500-word pillar posts with cluster content strategy, competitor analysis, and social media snippets.","price":15000,"deliveryDays":10,"revisions":3}]["seo","blog","content-writing","copywriting","wordpress"]["https://placehold.co/600x400/10b981/white?text=Content+Writing"]@™™™™™šcmqqdgka40000119vo5h390x4activežóŽ¿ó‡t?Iƒ)1ˆ1 ?cmqqdgkbu0005119vmzq7npm9Flutter Mobile App — MVP KitCross-platform mobile application built with Flutter and Dart. Includes state management (Riverpod), REST API integration, push notifications, and a clean Material-You design. Works on both iOS and Android.Mobile DevelopmentFlutterN [{"name":"Basic","description":"Single-screen app with 2 core features, basic navigation, and static data.","price":10000,"deliveryDays":10,"revisions":2},{"name":"Standard","description":"Multi-screen app with API integration, local storage, push notifications, and 4-6 feature modules.","price":20000,"deliveryDays":14,"revisions":3},{"name":"Premium","description":"Full production-ready app with backend integration, CI/CD pipeline, app store submission support, and analytics.","price":40000,"deliveryDays":21,"revisions":5}]["flutter","dart","mobile","cross-platform","android","ios"]["https://placehold.co/600x400/8b5cf6/white?text=Flutter+App"]@ffffffcmqqdgka40000119vo5h390x4activežóŽ¿êˆ?9ƒU+ˆ-
?cmqqdgkbj0003119v1d49hcz8Modern React DashboardA fully responsive admin dashboard built with React, TypeScript, and Tailwind CSS. Includes authentication, data visualization charts, dark mode support, and a reusable component library. Perfect for startups and SaaS platforms.Web DevelopmentFrontend:˜[{"name":"Basic","description":"Single-page dashboard with 3 core charts, responsive layout, and basic theming.","price":8000,"deliveryDays":7,"revisions":2},{"name":"Standard","description":"Multi-page dashboard with authentication, API integration, 6+ chart types, and dark mode.","price":15000,"deliveryDays":10,"revisions":3},{"name":"Premium","description":"Full enterprise dashboard with real-time data, user management, role-based access control, and one-click deployment.","price":30000,"deliveryDays":14,"revisions":5}]["react","typescript","tailwind","dashboard","admin","frontend"]["https://placehold.co/600x400/3b82f6/white?text=React+Dashboard"]
@333333 cmqqdgka40000119vo5h390x4activeK
MãŧkM?cmqqdgkd6000d119vrsh6uicd?cmqqdgkcp000b119vg51xmz2n?cmqqdgkce0009119vd3edvksy?cmqqdgkc30007119voai4ow16?cmqqdgkbu0005119vmzq7npm9? cmqqdgkbj0003119v1d49hcz8
@333333 cmqqdgka40000119vo5h390x4activežóŽ¿à
â ãâ‡~?Aƒ-?ˆG
?cmqqdgkd6000d119vrsh6uicdProfessional Video EditingHigh-quality video editing for YouTube, social media, or corporate use. Includes cutting, color grading, motion graphics, sound design, captions, and intro/outro animation. Delivered in 1080p or 4K.Video ProductionEditing & Post-Productiona¨[{"name":"Basic","description":"Up to 5-minute video: trimming, transitions, background music, and simple text overlays.","price":12000,"deliveryDays":5,"revisions":2},{"name":"Standard","description":"Up to 15-minute video: full edit including color grading, motion graphics, captions, and sound design.","price":25000,"deliveryDays":10,"revisions":3},{"name":"Premium","description":"Up to 30-minute video: cinematic edit with custom animations, multi-cam sync, advanced VFX, and 4K export.","price":50000,"deliveryDays":15,"revisions":5}]["video","editing","production","youtube","motion-graphics"]["https://placehold.co/600x400/ec4899/white?text=Video+Editing"]
cmqqdgka40000119vo5h390x4activežóŽÀˆ!?Gƒu''ˆO{?cmqqdgkcp000b119vg51xmz2nFull SEO Audit & OptimizationTechnical SEO audit covering site speed, mobile-friendliness, crawlability, indexation, and Core Web Vitals. Includes a prioritized action plan and hands-on implementation of fixes. Compatible with WordPress, Shopify, Webflow, and custom sites.SEO/MarketingTechnical SEO.à[{"name":"Basic","description":"SEO audit report with 10+ checkpoints, Core Web Vitals analysis, and a prioritized fix list.","price":6000,"deliveryDays":4,"revisions":1},{"name":"Standard","description":"Audit + hands-on fixes for top 15 issues, meta tag optimization, and schema markup implementation.","price":12000,"deliveryDays":7,"revisions":2},{"name":"Premium","description":"Full-site optimization: audit + fixes + content gap analysis + backlink audit + monthly ranking report template.","price":25000,"deliveryDays":12,"revisions":3}]["seo","marketing","audit","optimization","web-vitals"]["https://placehold.co/600x400/ef4444/white?text=SEO+Audit"]@cmqqdgka40000119vo5h390x4activežóŽÀ ‡v?Iƒ+)+ˆ/}?cmqqdgkce0009119vd3edvksyComplete Brand Identity DesignA comprehensive brand identity package including logo (primary, secondary, icon), color palette, typography system, business card mockup, and brand guidelines PDF. Delivered in AI, EPS, PNG, and SVG formats.Brand IdentityLogo & BrandingFP[{"name":"Basic","description":"Logo design with 3 concepts, 2 revisions, and final files in PNG and SVG.","price":8000,"deliveryDays":7,"revisions":2},{"name":"Standard","description":"Full identity kit: logo + color palette + typography + 2 mockups + brand guidelines PDF.","price":18000,"deliveryDays":12,"revisions":3},{"name":"Premium","description":"Complete brand launch: full identity kit + 6 mockups (stationery, signage, social) + vector files + brand strategy document.","price":35000,"deliveryDays":18,"revisions":5}]["branding","logo","design","identity","graphic-design"]["https://placehold.co/600x400/f59e0b/white?text=Brand+Identity"] @ÌÌÌÌÌÍ cmqqdgka40000119vo5h390x4activežóŽ¿þ
ïï' atomic-habits
There are three levels of change: outcomes, processes, and identity. Most people focus on outcomes (what you get) instead of identity (who you are).
## The Two-Step Process
1. **Decide the type of person you want to be.**
2. **Prove it to yourself with small wins.**
Your identity emerges from your habits. Every action is a vote for the type of person you wish to become.
## The Habit Loop
Every habit follows a four-step loop:
- **Cue** — The trigger that initiates the behavior
- **Craving** — The motivational force behind the habit
- **Response** — The actual habit you perform
- **Reward** — The benefit you gain from the habit
## Your Action Step
Instead of saying "I want to run a marathon," say "I am a runner." Then go for a 5-minute jog.[{"question":"What are the three levels of change mentioned?","options":["Outcomes, Processes, Identity","Goals, Actions, Results","Start, Middle, End","Mind, Body, Soul"],"correctIndex":0},{"question":"Each action is a ___ for the type of person you wish to become.","options":["Reminder","Vote","Proof","Promise"],"correctIndex":1}]žõëšÝžõëšÝŽA?? #1{yˆ]cmqr126kl0002kkn3rv2fydincmqr126ji0000kkn30t68jze6The 1% Rulethe-1-percent-ruleSmall habits don't just add up — they compound. Improving just 1% every day leads to being 37x better after one year.# The 1% Rule
Habits are the compound interest of self-improvement. The same way that money multiplies through compound interest, the effects of your habits multiply as you repeat them.
## The Math of Small Changes
If you get 1% better each day for one year, you'll end up 37 times better. Conversely, getting 1% worse each day for a year will decline you nearly to zero.
Success is the product of daily habits — not once-in-a-lifetime transformations.
## Why We Ignore Small Changes
We expect linear progress but live in a world of delayed returns. The most powerful outcomes are invisible during the early stages. This is the "Valley of Disappointment" — you do the right things but don't see results immediately.
## The Plateau of Latent Potential
Just like a ice cube melts at 32°F after hours of warming from 20°F to 31°F, your habits break through when you cross a critical threshold. Don't judge your success by what you see today. Your work is accumulating.
## Your Action Step
Identify one habit you want to build. Ask: "Can I make it 1% better today?"[{"question":"If you get 1% better every day, how much better will you be after one year?","options":["About 3x better","About 37x better","About 10x better","About 100x better"],"correctIndex":1},{"question":"What is the 'Valley of Disappointment'?","options":["A period where habits feel boring","The phase where you work but see no results","The time between starting a new habit","When you lose motivation completely"],"correctIndex":1},{"question":"At what temperature does ice melt?","options":["30°F","32°F","35°F","40°F"],"correctIndex":1}]žõëšÅg
kãŧk?cmqr126o6000akkn3ptsz919j?cmqr126mz0008kkn3l2wgt4x1?cmqr126m70006kkn368jx9x7a?cmqr126l90004kkn301wdpfab? cmqr126kl0002kkn3rv2fydin
x ì
A¾
Úwì
c
"  lõ-EYg3}indexLearnModuleProgress_enrollmentId_moduleId_keyLearnModuleProgress^CREATE UNIQUE INDEX "LearnModuleProgress_enrollmentId_moduleId_key" ON "LearnModuleProgress"("enrollmentId", "moduleId")#XS+UindexLearnEnrollment_userId_courseId_keyLearnEnrollment]CREATE UNIQUE INDEX "LearnEnrollment_userId_courseId_key" ON "LearnEnrollment"("userId", "courseId")~WA+indexLearnEnrollment_userId_idxLearnEnrollment\CREATE INDEX "LearnEnrollment_userId_idx" ON "LearnEnrollment"("userId")
VG#=indexLearnModule_courseId_slug_keyLearnModule[CREATE UNIQUE INDEX "LearnModule_courseId_slug_key" ON "LearnModule"("courseId", "slug")?TS-indexsqlite_autoindex_LearnCertificate_1LearnCertificateYƒ(Q//tableLearnSubscriptionLearnSubscriptionVCREATE TABLE "LearnSubscription" (
"id" TEXT NOT NULL PRIMARY KEY,
"userId" TEXT NOT NULL,
"status" TEXT NOT NULL DEFAULT 'active',
"polarSubId" TEXT,
"currentPeriodStart" DATETIME NOT NULL,
"currentPeriodEnd" DATETIME NOT NULL,
"cancelledAt" DATETIME,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" DATETIME NOT NULL
)ARU/indexsqlite_autoindex_LearnSubscription_1LearnSubscriptionW…O33‰[tableLearnModuleProgressLearnModuleProgressTCREATE TABLE "LearnModuleProgress" (
"id" TEXT NOT NULL PRIMARY KEY,
"enrollmentId" TEXT NOT NULL,
"moduleId" TEXT NOT NULL,
"completed" BOOLEAN NOT NULL DEFAULT false,
"score" REAL,
"listened" BOOLEAN NOT NULL DEFAULT false,
"completedAt" DATETIME,
"updatedAt" DATETIME NOT NULL,
CONSTRAINT "LearnModuleProgress_enrollmentId_fkey" FOREIGN KEY ("enrollmentId") REFERENCES "LearnEnrollment" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT "LearnModuleProgress_moduleId_fkey" FOREIGN KEY ("moduleId") REFERENCES "LearnModule" ("id") ON DELETE CASCADE ON UPDATE CASCADE
)EPY3indexsqlite_autoindex_LearnModuleProgress_1LearnModuleProgressU„AM++ˆ9tableLearnEnrollmentLearnEnrollmentRCREATE TABLE "LearnEnrollment" (
"id" TEXT NOT NULL PRIMARY KEY,
"userId" TEXT NOT NULL,
"courseId" TEXT NOT NULL,
"purchaseType" TEXT NOT NULL DEFAULT 'one_time',
"completed" BOOLEAN NOT NULL DEFAULT false,
"progress" REAL NOT NULL DEFAULT 0,
"startedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
"completedAt" DATETIME,
"updatedAt" DATETIME NOT NULL,
CONSTRAINT "LearnEnrollment_courseId_fkey" FOREIGN KEY ("courseId") REFERENCES "LearnCourse" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
)=NQ+indexsqlite_autoindex_LearnEnrollment_1LearnEnrollmentS5LI#indexsqlite_autoindex_LearnModule_1LearnModulePô##ˆGtableLearnModuleLearnModuleOCREATE TABLE "LearnModule" (
"id" TEXT NOT NULL PRIMARY KEY,
"courseId" TEXT NOT NULL,
"order" INTEGER NOT NULL,
"title" TEXT NOT NULL,
"slug" TEXT NOT NULL,
"keyTakeaway" TEXT,
#XS+UindexLearnEnrollment_userId_courseId_keyLearnEnrollment]CREATE UNIQUE INDEX "LearnEnrollment_userId_courseId_key" ON "LearnEnrollment"("userId", "courseId")~WA+indexLearnEnrollment_userId_idxLearnEnrollment\CREATE INDEX "LearnEnrollment_userId_idx" ON "LearnEnrollment"("userId")
VG#=indexLearnModule_courseId_slug_keyLearnModule[CREATE UNIQUE INDEX "LearnModule_courseId_slug_key" ON "LearnModule"("courseId", "slug")?TS-indexsqlite_autoindex_LearnCertificate_1LearnCertificateY…S--‰gtableLearnCertificateLearnCertificateXCREATE TABLE "LearnCertificate" (
"id" TEXT NOT NULL PRIMARY KEY,
"serialNumber" TEXT NOT NULL,
"userId" TEXT NOT NULL,
"userName" TEXT NOT NULL,
"courseId" TEXT NOT NULL,
"moduleCount" INTEGER NOT NULL DEFAULT 0,
"score" REAL,
"pdfPath" TEXT,
"issuedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
"viewedAt" DATETIME,
"revoked" BOOLEAN NOT NULL DEFAULT false,
"revokedAt" DATETIME,
"hashOnChain" TEXT,
"metadata" TEXT,
CONSTRAINT "LearnCertificate_courseId_fkey" FOREIGN KEY ("courseId") REFERENCES "LearnCourse" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
)





FœÐs5?;cmqr126ji0000kkn30t68jze6design-your-environment,?)cmqr126ji0000kkn30t68jze6habit-stacking(?!cmqr126ji0000kkn30t68jze6the-4-laws3?7cmqr126ji0000kkn30t68jze6identity-based-habits/?1 cmqr126ji0000kkn30t68jze6the-1-percent-rule




¸ å ð TËB¤
ˆå
o
8 Ǧ¦q¦qwf9'indexLearnCategory_slug_keyLearnCategoryNCREATE UNIQUE INDEX "LearnCategory_slug_key" ON "LearnCategory"("slug")†5c##Œ1tableLearnCourseLearnCoursekCREATE TABLE "LearnCourse" (
"id" TEXT NOT NULL PRIMARY KEY,
"slug" TEXT NOT NULL,
"title" TEXT NOT NULL,
"author" TEXT NOT NULL,
"description" TEXT NOT NULL,
"imageUrl" TEXT,
"moduleCount" INTEGER NOT NULL DEFAULT 0,
"totalMinutes" INTEGER NOT NULL DEFAULT 0,
"difficulty" TEXT NOT NULL DEFAULT 'beginner',
"giteaPath" TEXT NOT NULL,
"priceFlh" INTEGER,
"priceUsd" REAL,
"subscriptionOnly" BOOLEAN NOT NULL DEFAULT false,
"published" BOOLEAN NOT NULL DEFAULT false,
"categoryId" TEXT,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" DATETIME NOT NULL,
CONSTRAINT "LearnCourse_categoryId_fkey" FOREIGN KEY ("categoryId") REFERENCES "LearnCategory" ("id") ON DELETE SET NULL ON UPDATE CASCADE
)a5dI#indexsqlite_autoindex_LearnCourse_1LearnCoursel
¸E''„;tableLearnCategoryLearnCategoryiCREATE TABLE "LearnCategory" (
"id" TEXT NOT NULL PRIMARY KEY,
"slug" TEXT NOT NULL,
"name" TEXT NOT NULL,
"description" TEXT,
"icon" TEXT,
"color" TEXT,
"order" INTEGER NOT NULL DEFAULT 0,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
)9b=gQ+indexsqlite_autoindex_new_LearnCourse_1new_LearnCoursei `U-KindexLearnCertificate_courseId_userId_idxLearnCertificatefCREATE INDEX "LearnCertificate_courseId_userId_idx" ON "LearnCertificate"("courseId", "userId")_C-!indexLearnCertificate_userId_idxLearnCertificateeCREATE INDEX "LearnCertificate_userId_idx" ON "LearnCertificate"("userId")^O-9indexLearnCertificate_serialNumber_idxLearnCertificatedCREATE INDEX "LearnCertificate_serialNumber_idx" ON "LearnCertificate"("serialNumber")]O-GindexLearnCertificate_serialNumber_keyLearnCertificatecCREATE UNIQUE INDEX "LearnCertificate_serialNumber_key" ON "LearnCertificate"("serialNumber")\E/%indexLearnSubscription_status_idxLearnSubscriptionbCREATE INDEX "LearnSubscription_status_idx" ON "LearnSubscription"("status")[E/%indexLearnSubscription_userId_idxLearnSubscriptionaCREATE INDEX "LearnSubscription_userId_idx" ON "LearnSubscription"("userId")ZM/CindexLearnSubscription_polarSubId_keyLearnSubscription_CREATE UNIQUE INDEX "LearnSubscription_polarSubId_key" ON "LearnSubscription"("polarSubId")EYg3}indexLearnModuleProgress_enrollmentId_moduleId_keyLearnModuleProgress^CREATE UNIQUE INDEX "LearnModuleProgress_enrollmentId_moduleId_key" ON "LearnModuleProgress"("enrollmentId", "moduleId")S+UindexLearnEnrollment_userId_courseId_keyLearnEnrollment]CREATE UNIQUE INDEX "LearnEnrollment_userId_courseId_key" ON "LearnEnrollment"("userId", "courseId")~WA+indexLearnEnrollment_userId_idxLearnEnrollment\CREATE INDEX "LearnEnrollment_userId_idx" ON "LearnEnrollment"("userId")
VG#=indexLearnModule_courseId_slug_keyLearnModule[CREATE UNIQUE INDEX "LearnModule_courseId_slug_key" ON "LearnModule"("courseId", "slug")oe5#indexLearnCourse_slug_keyLearnCourseMCREATE UNIQUE INDEX "LearnCourse_slug_key" oh5#indexLearnCourse_slug_keyLearnCourseMCREATE UNIQUE INDEX "LearnCourse_slug_key" ON "LearnCourse"("slug")5gI#indexsqlite_autoindex_LearnCourse_1LearnCoursei…f##‰ctableLearnCourseLearnCourseNCREATE TABLE "LearnCourse" (
"id" TEXT NOT NULL PRIMARY KEY,
"slug" TEXT NOT NULL,
"title" TEXT NOT NULL,
"author" TEXT NOT NULL,
"description" TEXT NOT NULL,
"imageUrl" TEXT,
"moduleCount" INTEGER NOT NULL DEFAULT 0,
"totalMinutes" INTEGER NOT NULL DEFAULT 0,
"difficulty" TEXT NOT NULL DEFAULT 'beginner',
"giteaPath" TEXT NOT NULL,
"priceFlh" INTEGER,
"priceUsd" REAL,
"subscriptionOnly" BOOLEAN NOT NULL DEFAULT false,
"published" BOOLEAN NOT NULL DEFAULT false,
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" DATETIME NOT NULL
)






There are three levels of change: outcomes, processes, and identity. Most people focus on outcomes (what you get) instead of identity (who you are).
## The Two-Step Process
1. **Decide the type of person you want to be.**
2. **Prove it to yourself with small wins.**
Your identity emerges from your habits. Every action is a vote for the type of person you wish to become.
## The Habit Loop
Every habit follows a four-step loop:
- **Cue** — The trigger that initiates the behavior
- **Craving** — The motivational force behind the habit
- **Response** — The actual habit you perform
- **Reward** — The benefit you gain from the habit
## Your Action Step
Instead of saying "I want to run a marathon," say "I am a runner." Then go for a 5-minute jog.[{"question":"What are the three levels of change mentioned?","options":["Outcomes, Processes, Identity","Goals, Actions, Results","Start, Middle, End","Mind, Body, Soul"],"correctIndex":0},{"question":"Each action is a ___ for the type of person you wish to become.","options":["Reminder","Vote","Proof","Promise"],"correctIndex":1}]žõëšÝžõëšÝŽA?? #1{yˆ]cmqr126kl0002kkn3rv2fydincmqr126ji0000kkn30t68jze6The 1% Rulethe-1-percent-ruleSmall habits don't just add up — they compound. Improving just 1% every day leads to being 37x better after one year.# The 1% Rule
Habits are the compound interest of self-improvement. The same way that money multiplies through compound interest, the effects of your habits multiply as you repeat them.
## The Math of Small Changes
If you get 1% better each day for one year, you'll end up 37 times better. Conversely, getting 1% worse each day for a year will decline you nearly to zero.
Success is the product of daily habits — not once-in-a-lifetime transformations.
## Why We Ignore Small Changes
We expect linear progress but live in a world of delayed returns. The most powerful outcomes are invisible during the early stages. This is the "Valley of Disappointment" — you do the right things but don't see results immediately.
## The Plateau of Latent Potential
Just like a ice cube melts at 32°F after hours of warming from 20°F to 31°F, your habits break through when you cross a critical threshold. Don't judge your success by what you see today. Your work is accumulating.
## Your Action Step
Identify one habit you want to build. Ask: "Can I make it 1% better today?"[{"question":"If you get 1% better every day, how much better will you be after one year?","options":["About 3x better","About 37x better","About 10x better","About 100x better"],"correctIndex":1},{"question":"What is the 'Valley of Disappointment'?","options":["A period where habits feel boring","The phase where you work but see no results","The time between starting a new habit","When you lose motivation completely"],"correctIndex":1},{"question":"At what temperature does ice melt?","options":["30°F","32°F","35°F","40°F"],"correctIndex":1}]žõëšÅžõëšÅ
c
ÒŸcŒ9??;;SŽO…{cmqr126o6000akkn3ptsz919jcmqr126ji0000kkn30t68jze6Design Your Environmentdesign-your-environmentYour surroundings shape your behavior more than willpower. Design your environment for success by reducing friction for good habits and increasing it for bad ones.# Design Your Environment
Willpower is overrated. The most reliable way to stick to good habits is to design your environment so that the right choice is the easy choice.
## Friction
Every habit is initiated by a cue. If you want to make a habit a big part of your life, make the cue a big part of your environment.
- Want to read more? Keep a book on your pillow.
- Want to drink more water? Fill a bottle and place it on your desk.
- Want to practice guitar? Leave it in the middle of the room.
## One Space, One Use
Don't mix contexts. Your bed is for sleep. Your desk is for work. When you mix contexts, you mix habits.
## Commitment Devices
A commitment device is a choice you make in the present that locks in better behavior in the future. Delete the games from your phone. Unsubscribe from junk food delivery.
## Your Final Action Step
Choose ONE habit to focus on this week. Apply all 4 laws. Track it. Repeat.[{"question":"What is a commitment device?","options":["A promise to yourself","A present choice that locks in better future behavior","A device that tracks habits","An accountability partner"],"correctIndex":1},{"question":"Wanting to read more — where should you keep the book?","options":["On your shelf","On your pillow","On your desk","In your bag"],"correctIndex":1}]žõë›Fžõë›Fˆ0??))‰iƒ5cmqr126mz0008kkn3l2wgt4x1cmqr126ji0000kkn30t68jze6Habit Stackinghabit-stackingThe best way to build a new habit is to anchor it to an existing one using the formula: After [CURRENT HABIT], I will [NEW HABIT].# Habit Stacking
One of the best ways to build a new habit is to identify a current habit you already do each day and then stack your new behavior on top.
## The Formula
> After [CURRENT HABIT], I will [NEW HABIT].
## Examples
- After I pour my morning coffee, I will meditate for 60 seconds.
- After I sit down to dinner, I will say one thing I'm grateful for.