@a5gard/asgard 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env +2 -0
- package/.gitignore copy +6 -0
- package/.vscode/ntrsync/.vscode/ocrmnavigator/id.txt +1 -0
- package/.vscode/ntrsync/.vscode/ocrmnavigator.code-snippets +3664 -0
- package/.vscode/ntrsync/00002_CRM URGENT_todo.md +79 -0
- package/.vscode/ntrsync/10005_notes repo url.md +3 -0
- package/.vscode/ntrsync/10012_vscode_color_settings.md +133 -0
- package/.vscode/ntrsync/10013_Googles Snapchat Upload Hack note.md +11 -0
- package/.vscode/ntrsync/10014_APP IDEA - Lawyer CRM.md +229 -0
- package/.vscode/ntrsync/10015_APP IDEA - Onlyfans.md +293 -0
- package/.vscode/ntrsync/10016_notes repo url.md +3 -0
- package/.vscode/ntrsync/10504_adhd symptom.md +3 -0
- package/.vscode/ntrsync/10505_APP IDEA - GMAIL.md +39 -0
- package/.vscode/ntrsync/10506_container home - build mats.md +18 -0
- package/.vscode/ntrsync/10507_cleint facing site meta and loader function.md +25 -0
- package/.vscode/ntrsync/10508_Sabaak VSCode 1-8 players - private teams, solo q, duos q.md +11 -0
- package/.vscode/ntrsync/10509_schema dump.md +80 -0
- package/.vscode/ntrsync/10510_APPT BEACONHILL_reminder.md +7 -0
- package/.vscode/ntrsync/10512_clipboard very usefull should use asap within all apps.md +101 -0
- package/.vscode/ntrsync/10516_DevStack_todo.md +130 -0
- package/.vscode/ntrsync/10517_CRM_todo.md +95 -0
- package/.vscode/ntrsync/10518_Catalyst POS_todo.md +73 -0
- package/.vscode/ntrsync/10519_Catalyst Software_todo.md +497 -0
- package/.vscode/ntrsync/10523_new note.md +6 -0
- package/.vscode/ntrsync/10524_New Reminder_reminder.md +5 -0
- package/.vscode/ntrsync/10525_Mobile - Notes, To-Dos And Things_todo.md +4 -0
- package/.vscode/ntrsync/90002_COMPLETED_todo.md +97 -0
- package/.vscode/ntrsync/README.md +1 -0
- package/.vscode/ocrmnavigator/id.txt +1 -0
- package/.vscode/ocrmnavigator.code-snippets +349 -0
- package/.vscode/settings.json +1 -0
- package/CHANGELOG.md +6 -0
- package/LICENSE.md +21 -0
- package/README.md +1612 -0
- package/bin/dev.cmd +3 -0
- package/bin/dev.js +17 -0
- package/bin/run.cmd +3 -0
- package/bin/run.js +5 -0
- package/config.asgard +8 -0
- package/dist/commands/add-source.d.ts +9 -0
- package/dist/commands/add-source.d.ts.map +1 -0
- package/dist/commands/add-source.js +68 -0
- package/dist/commands/add-source.js.map +1 -0
- package/dist/commands/baldr.d.ts +5 -0
- package/dist/commands/baldr.d.ts.map +1 -0
- package/dist/commands/baldr.js +35 -0
- package/dist/commands/baldr.js.map +1 -0
- package/dist/commands/combine-timelines.d.ts +5 -0
- package/dist/commands/combine-timelines.d.ts.map +1 -0
- package/dist/commands/combine-timelines.js +53 -0
- package/dist/commands/combine-timelines.js.map +1 -0
- package/dist/commands/create-project.d.ts +10 -0
- package/dist/commands/create-project.d.ts.map +1 -0
- package/dist/commands/create-project.js +195 -0
- package/dist/commands/create-project.js.map +1 -0
- package/dist/commands/create-timeline.d.ts +8 -0
- package/dist/commands/create-timeline.d.ts.map +1 -0
- package/dist/commands/create-timeline.js +54 -0
- package/dist/commands/create-timeline.js.map +1 -0
- package/dist/commands/delete-project.d.ts +5 -0
- package/dist/commands/delete-project.d.ts.map +1 -0
- package/dist/commands/delete-project.js +47 -0
- package/dist/commands/delete-project.js.map +1 -0
- package/dist/commands/delete-source.d.ts +8 -0
- package/dist/commands/delete-source.d.ts.map +1 -0
- package/dist/commands/delete-source.js +57 -0
- package/dist/commands/delete-source.js.map +1 -0
- package/dist/commands/delete-timeline.d.ts +8 -0
- package/dist/commands/delete-timeline.d.ts.map +1 -0
- package/dist/commands/delete-timeline.js +54 -0
- package/dist/commands/delete-timeline.js.map +1 -0
- package/dist/commands/delete-version.d.ts +8 -0
- package/dist/commands/delete-version.d.ts.map +1 -0
- package/dist/commands/delete-version.js +65 -0
- package/dist/commands/delete-version.js.map +1 -0
- package/dist/commands/download-file.d.ts +17 -0
- package/dist/commands/download-file.d.ts.map +1 -0
- package/dist/commands/download-file.js +87 -0
- package/dist/commands/download-file.js.map +1 -0
- package/dist/commands/download-folder.d.ts +18 -0
- package/dist/commands/download-folder.d.ts.map +1 -0
- package/dist/commands/download-folder.js +111 -0
- package/dist/commands/download-folder.js.map +1 -0
- package/dist/commands/download-source.d.ts +12 -0
- package/dist/commands/download-source.d.ts.map +1 -0
- package/dist/commands/download-source.js +46 -0
- package/dist/commands/download-source.js.map +1 -0
- package/dist/commands/gh-setup.d.ts +7 -0
- package/dist/commands/gh-setup.d.ts.map +1 -0
- package/dist/commands/gh-setup.js +106 -0
- package/dist/commands/gh-setup.js.map +1 -0
- package/dist/commands/load-project.d.ts +5 -0
- package/dist/commands/load-project.d.ts.map +1 -0
- package/dist/commands/load-project.js +56 -0
- package/dist/commands/load-project.js.map +1 -0
- package/dist/commands/menu.d.ts +5 -0
- package/dist/commands/menu.d.ts.map +1 -0
- package/dist/commands/menu.js +41 -0
- package/dist/commands/menu.js.map +1 -0
- package/dist/commands/midgardr.d.ts +5 -0
- package/dist/commands/midgardr.d.ts.map +1 -0
- package/dist/commands/midgardr.js +24 -0
- package/dist/commands/midgardr.js.map +1 -0
- package/dist/commands/publish-project.d.ts +5 -0
- package/dist/commands/publish-project.d.ts.map +1 -0
- package/dist/commands/publish-project.js +102 -0
- package/dist/commands/publish-project.js.map +1 -0
- package/dist/commands/replace-timeline.d.ts +8 -0
- package/dist/commands/replace-timeline.d.ts.map +1 -0
- package/dist/commands/replace-timeline.js +63 -0
- package/dist/commands/replace-timeline.js.map +1 -0
- package/dist/commands/restore-version.d.ts +8 -0
- package/dist/commands/restore-version.d.ts.map +1 -0
- package/dist/commands/restore-version.js +67 -0
- package/dist/commands/restore-version.js.map +1 -0
- package/dist/commands/save-project.d.ts +8 -0
- package/dist/commands/save-project.d.ts.map +1 -0
- package/dist/commands/save-project.js +43 -0
- package/dist/commands/save-project.js.map +1 -0
- package/dist/commands/set-source.d.ts +9 -0
- package/dist/commands/set-source.d.ts.map +1 -0
- package/dist/commands/set-source.js +59 -0
- package/dist/commands/set-source.js.map +1 -0
- package/dist/commands/switch-timeline.d.ts +8 -0
- package/dist/commands/switch-timeline.d.ts.map +1 -0
- package/dist/commands/switch-timeline.js +61 -0
- package/dist/commands/switch-timeline.js.map +1 -0
- package/dist/commands/sync-source.d.ts +5 -0
- package/dist/commands/sync-source.d.ts.map +1 -0
- package/dist/commands/sync-source.js +29 -0
- package/dist/commands/sync-source.js.map +1 -0
- package/dist/commands/upload-project+++.d.ts +5 -0
- package/dist/commands/upload-project+++.d.ts.map +1 -0
- package/dist/commands/upload-project+++.js +32 -0
- package/dist/commands/upload-project+++.js.map +1 -0
- package/dist/commands/upload-project++.d.ts +5 -0
- package/dist/commands/upload-project++.d.ts.map +1 -0
- package/dist/commands/upload-project++.js +33 -0
- package/dist/commands/upload-project++.js.map +1 -0
- package/dist/commands/upload-project+.d.ts +5 -0
- package/dist/commands/upload-project+.d.ts.map +1 -0
- package/dist/commands/upload-project+.js +40 -0
- package/dist/commands/upload-project+.js.map +1 -0
- package/dist/commands/upload-project.d.ts +5 -0
- package/dist/commands/upload-project.d.ts.map +1 -0
- package/dist/commands/upload-project.js +29 -0
- package/dist/commands/upload-project.js.map +1 -0
- package/dist/commands/view-timeline.d.ts +5 -0
- package/dist/commands/view-timeline.d.ts.map +1 -0
- package/dist/commands/view-timeline.js +39 -0
- package/dist/commands/view-timeline.js.map +1 -0
- package/dist/commands/view-versions.d.ts +5 -0
- package/dist/commands/view-versions.d.ts.map +1 -0
- package/dist/commands/view-versions.js +45 -0
- package/dist/commands/view-versions.js.map +1 -0
- package/dist/git/helpers.d.ts +10 -0
- package/dist/git/helpers.d.ts.map +1 -0
- package/dist/git/helpers.js +300 -0
- package/dist/git/helpers.js.map +1 -0
- package/dist/git/sync-repo.d.ts +2 -0
- package/dist/git/sync-repo.d.ts.map +1 -0
- package/dist/git/sync-repo.js +17 -0
- package/dist/git/sync-repo.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/box.d.ts +11 -0
- package/dist/utils/box.d.ts.map +1 -0
- package/dist/utils/box.js +158 -0
- package/dist/utils/box.js.map +1 -0
- package/ideas.md +46 -0
- package/package.json +53 -0
- package/src/commands/add-source.js +72 -0
- package/src/commands/baldr.js +38 -0
- package/src/commands/combine-timelines.js +65 -0
- package/src/commands/create-project.js +216 -0
- package/src/commands/create-timeline.js +60 -0
- package/src/commands/delete-project.js +54 -0
- package/src/commands/delete-source.js +63 -0
- package/src/commands/delete-timeline.js +63 -0
- package/src/commands/delete-version.js +74 -0
- package/src/commands/download-file.js +101 -0
- package/src/commands/download-folder.js +123 -0
- package/src/commands/download-source.js +51 -0
- package/src/commands/gh-setup.js +77 -0
- package/src/commands/load-project.js +63 -0
- package/src/commands/menu.js +46 -0
- package/src/commands/midgardr.js +25 -0
- package/src/commands/publish-project.js +167 -0
- package/src/commands/replace-timeline.js +76 -0
- package/src/commands/restore-version.js +80 -0
- package/src/commands/save-project.js +48 -0
- package/src/commands/set-source.js +65 -0
- package/src/commands/switch-timeline.js +69 -0
- package/src/commands/sync-source.js +32 -0
- package/src/commands/upload-project+++.js +34 -0
- package/src/commands/upload-project++.js +35 -0
- package/src/commands/upload-project+.js +47 -0
- package/src/commands/upload-project.js +31 -0
- package/src/commands/view-timeline.js +43 -0
- package/src/commands/view-versions.js +50 -0
- package/src/git/helpers.js +333 -0
- package/src/git/sync-repo.js +16 -0
- package/src/index.js +2 -0
- package/src/utils/box.js +282 -0
- package/tsconfig.json +23 -0
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
<<<<<<< HEAD:10003_APP IDEA - Onlyfans.md
|
|
2
|
+
# APP IDEA - Onlyfans
|
|
3
|
+
|
|
4
|
+
- to ensure user interaction is not burdened to much by onlyfans stupid practices it might be best to use a browser ap to create the order with the client wihle they are on the same page, that sends the data to the offsite dashbaord to be used for later the only down side is that they would have to manually data over to the broswer app but... this would be the most effeicnt way for the content creator because they wouldnt have to open any other programs or websites, this allows the creator to contiunue selling through only fans but widening the product offerings
|
|
5
|
+
|
|
6
|
+
- so it fits the content creation schedule while at the same time not breaking onlyfans tos
|
|
7
|
+
You're absolutely right! Using a browser-based app that integrates seamlessly with OnlyFans while the creator is on the platform is a great way to minimize friction and ensure compliance with OnlyFans' TOS. This approach allows creators to manage custom orders efficiently without leaving OnlyFans or breaking any rules.
|
|
8
|
+
|
|
9
|
+
- Here's how you can design this system:
|
|
10
|
+
|
|
11
|
+
- Key Workflow
|
|
12
|
+
- Creator and Client Chat on OnlyFans:
|
|
13
|
+
|
|
14
|
+
- The client sends a custom order request via OnlyFans chat.
|
|
15
|
+
|
|
16
|
+
- The creator uses the browser app to log the order details while staying on the OnlyFans page.
|
|
17
|
+
|
|
18
|
+
- Order Creation in the Browser App:
|
|
19
|
+
|
|
20
|
+
- The creator inputs the client’s username, order details, and price into the browser app.
|
|
21
|
+
|
|
22
|
+
- The app sends this data to the off-site dashboard for tracking and queue management.
|
|
23
|
+
|
|
24
|
+
- Creator Sends Locked Message:
|
|
25
|
+
|
|
26
|
+
- The creator sends a locked message to the client on OnlyFans with the price and instructions for payment.
|
|
27
|
+
|
|
28
|
+
- The client pays upfront to confirm the order.
|
|
29
|
+
|
|
30
|
+
- Order Fulfillment:
|
|
31
|
+
|
|
32
|
+
- The creator works on the custom content and sends it to the client as another locked message or post.
|
|
33
|
+
|
|
34
|
+
- The creator updates the order status in the off-site dashboard.
|
|
35
|
+
|
|
36
|
+
- Benefits of This Approach
|
|
37
|
+
- No Additional Programs or Websites:
|
|
38
|
+
|
|
39
|
+
- The browser app runs alongside OnlyFans, so creators don’t need to switch between platforms.
|
|
40
|
+
|
|
41
|
+
- Compliance with OnlyFans TOS:
|
|
42
|
+
|
|
43
|
+
- All payments and content delivery happen within OnlyFans.
|
|
44
|
+
|
|
45
|
+
- Efficient Order Management:
|
|
46
|
+
|
|
47
|
+
- The off-site dashboard keeps track of orders, so creators can focus on content creation.
|
|
48
|
+
|
|
49
|
+
- Tech Stack
|
|
50
|
+
- Browser App:
|
|
51
|
+
- Framework: Use a browser extension or a bookmarklet (a small JavaScript app that runs in the browser).
|
|
52
|
+
|
|
53
|
+
- UI: A simple popup or sidebar that overlays the OnlyFans page.
|
|
54
|
+
|
|
55
|
+
- Data Storage: Send data to your off-site dashboard via an API.
|
|
56
|
+
|
|
57
|
+
- Off-Site Dashboard:
|
|
58
|
+
- Frontend: Remix-run (as you're already using it)
|
|
59
|
+
|
|
60
|
+
- Backend: Node.js with Express or Remix’s built-in server capabilities
|
|
61
|
+
|
|
62
|
+
- Database: PostgreSQL or MongoDB (for storing orders and queue data)
|
|
63
|
+
|
|
64
|
+
- ORM: Prisma (for database management)
|
|
65
|
+
|
|
66
|
+
- Authentication:
|
|
67
|
+
- Remix-auth: For handling creator login and authentication.
|
|
68
|
+
|
|
69
|
+
- Hosting:
|
|
70
|
+
- Platform: Vercel, Netlify, or AWS for hosting the dashboard.
|
|
71
|
+
|
|
72
|
+
- Implementation Steps
|
|
73
|
+
- Build the Browser App:
|
|
74
|
+
|
|
75
|
+
- Create a browser extension or bookmarklet that overlays the OnlyFans page.
|
|
76
|
+
|
|
77
|
+
- The app should include a form for logging order details (e.g., client username, order description, price, etc.).
|
|
78
|
+
|
|
79
|
+
- Use JavaScript to send this data to your off-site dashboard via an API.
|
|
80
|
+
|
|
81
|
+
- Off-Site Dashboard:
|
|
82
|
+
|
|
83
|
+
- Build a dashboard where creators can view and manage their orders.
|
|
84
|
+
|
|
85
|
+
- Use a database to store order details and queue data.
|
|
86
|
+
|
|
87
|
+
- API for Data Transfer:
|
|
88
|
+
|
|
89
|
+
- Create an API endpoint to receive order data from the browser app.
|
|
90
|
+
|
|
91
|
+
- Store the data in your database and update the dashboard in real-time.
|
|
92
|
+
|
|
93
|
+
- Pre-Written Templates:
|
|
94
|
+
|
|
95
|
+
- Provide creators with pre-written templates for locked messages to streamline communication with clients.
|
|
96
|
+
|
|
97
|
+
- Testing and Deployment:
|
|
98
|
+
|
|
99
|
+
- Test the browser app and dashboard with a small group of creators.
|
|
100
|
+
|
|
101
|
+
- Deploy the dashboard and make the browser app available for download or installation.
|
|
102
|
+
|
|
103
|
+
- Example Workflow
|
|
104
|
+
- Client Requests Custom Content:
|
|
105
|
+
|
|
106
|
+
- Client sends a message on OnlyFans: "Hi, I’d like a custom video for $50."
|
|
107
|
+
|
|
108
|
+
- Creator opens the browser app and inputs the order details.
|
|
109
|
+
|
|
110
|
+
- Order Creation:
|
|
111
|
+
|
|
112
|
+
- The browser app sends the order data to the off-site dashboard.
|
|
113
|
+
|
|
114
|
+
- The dashboard adds the order to the creator’s queue.
|
|
115
|
+
|
|
116
|
+
- Creator Sends Locked Message:
|
|
117
|
+
|
|
118
|
+
- Creator sends a locked message to the client: "Thanks for your request! Please pay $50 to unlock this message and confirm your order."
|
|
119
|
+
|
|
120
|
+
- Client pays upfront to confirm the order.
|
|
121
|
+
|
|
122
|
+
- Order Fulfillment:
|
|
123
|
+
|
|
124
|
+
- Creator works on the custom content and sends it to the client as another locked message: "Your custom video is ready! Please pay $50 to unlock it."
|
|
125
|
+
|
|
126
|
+
- Creator updates the order status in the dashboard to "Completed."
|
|
127
|
+
|
|
128
|
+
- Compliance with OnlyFans TOS
|
|
129
|
+
- Ensure that all payments and content delivery happen within OnlyFans.
|
|
130
|
+
|
|
131
|
+
- Do not scrape data from OnlyFans or automate interactions programmatically.
|
|
132
|
+
|
|
133
|
+
- Future Enhancements
|
|
134
|
+
- Real-Time Sync:
|
|
135
|
+
|
|
136
|
+
- If OnlyFans ever releases a public API, you can sync order data automatically between the browser app and the dashboard.
|
|
137
|
+
|
|
138
|
+
- Analytics:
|
|
139
|
+
|
|
140
|
+
- Add analytics to the dashboard to help creators track revenue, order volume, and client engagement.
|
|
141
|
+
|
|
142
|
+
- Mobile Support:
|
|
143
|
+
|
|
144
|
+
- Develop a mobile-friendly version of the browser app for creators who use OnlyFans on their phones.
|
|
145
|
+
|
|
146
|
+
- This approach ensures a seamless experience for creators while keeping everything compliant with OnlyFans' TOS. Let me know if you need help with specific parts of the implementation, such as building the browser app or setting up the API!
|
|
147
|
+
=======
|
|
148
|
+
# APP IDEA - Onlyfans
|
|
149
|
+
|
|
150
|
+
to ensure user interaction is not burdened to much by onlyfans stupid practices it might be best to use a browser ap to create the order with the client wihle they are on the same page, that sends the data to the offsite dashbaord to be used for later the only down side is that they would have to manually data over to the broswer app but... this would be the most effeicnt way for the content creator because they wouldnt have to open any other programs or websites, this allows the creator to contiunue selling through only fans but widening the product offerings
|
|
151
|
+
|
|
152
|
+
so it fits the content creation schedule while at the same time not breaking onlyfans tos
|
|
153
|
+
You're absolutely right! Using a browser-based app that integrates seamlessly with OnlyFans while the creator is on the platform is a great way to minimize friction and ensure compliance with OnlyFans' TOS. This approach allows creators to manage custom orders efficiently without leaving OnlyFans or breaking any rules.
|
|
154
|
+
|
|
155
|
+
Here's how you can design this system:
|
|
156
|
+
|
|
157
|
+
Key Workflow
|
|
158
|
+
Creator and Client Chat on OnlyFans:
|
|
159
|
+
|
|
160
|
+
The client sends a custom order request via OnlyFans chat.
|
|
161
|
+
|
|
162
|
+
The creator uses the browser app to log the order details while staying on the OnlyFans page.
|
|
163
|
+
|
|
164
|
+
Order Creation in the Browser App:
|
|
165
|
+
|
|
166
|
+
The creator inputs the clientâs username, order details, and price into the browser app.
|
|
167
|
+
|
|
168
|
+
The app sends this data to the off-site dashboard for tracking and queue management.
|
|
169
|
+
|
|
170
|
+
Creator Sends Locked Message:
|
|
171
|
+
|
|
172
|
+
The creator sends a locked message to the client on OnlyFans with the price and instructions for payment.
|
|
173
|
+
|
|
174
|
+
The client pays upfront to confirm the order.
|
|
175
|
+
|
|
176
|
+
Order Fulfillment:
|
|
177
|
+
|
|
178
|
+
The creator works on the custom content and sends it to the client as another locked message or post.
|
|
179
|
+
|
|
180
|
+
The creator updates the order status in the off-site dashboard.
|
|
181
|
+
|
|
182
|
+
Benefits of This Approach
|
|
183
|
+
No Additional Programs or Websites:
|
|
184
|
+
|
|
185
|
+
The browser app runs alongside OnlyFans, so creators donât need to switch between platforms.
|
|
186
|
+
|
|
187
|
+
Compliance with OnlyFans TOS:
|
|
188
|
+
|
|
189
|
+
All payments and content delivery happen within OnlyFans.
|
|
190
|
+
|
|
191
|
+
Efficient Order Management:
|
|
192
|
+
|
|
193
|
+
The off-site dashboard keeps track of orders, so creators can focus on content creation.
|
|
194
|
+
|
|
195
|
+
Tech Stack
|
|
196
|
+
Browser App:
|
|
197
|
+
Framework: Use a browser extension or a bookmarklet (a small JavaScript app that runs in the browser).
|
|
198
|
+
|
|
199
|
+
UI: A simple popup or sidebar that overlays the OnlyFans page.
|
|
200
|
+
|
|
201
|
+
Data Storage: Send data to your off-site dashboard via an API.
|
|
202
|
+
|
|
203
|
+
Off-Site Dashboard:
|
|
204
|
+
Frontend: Remix-run (as you're already using it)
|
|
205
|
+
|
|
206
|
+
Backend: Node.js with Express or Remixâs built-in server capabilities
|
|
207
|
+
|
|
208
|
+
Database: PostgreSQL or MongoDB (for storing orders and queue data)
|
|
209
|
+
|
|
210
|
+
ORM: Prisma (for database management)
|
|
211
|
+
|
|
212
|
+
Authentication:
|
|
213
|
+
Remix-auth: For handling creator login and authentication.
|
|
214
|
+
|
|
215
|
+
Hosting:
|
|
216
|
+
Platform: Vercel, Netlify, or AWS for hosting the dashboard.
|
|
217
|
+
|
|
218
|
+
Implementation Steps
|
|
219
|
+
Build the Browser App:
|
|
220
|
+
|
|
221
|
+
Create a browser extension or bookmarklet that overlays the OnlyFans page.
|
|
222
|
+
|
|
223
|
+
The app should include a form for logging order details (e.g., client username, order description, price, etc.).
|
|
224
|
+
|
|
225
|
+
Use JavaScript to send this data to your off-site dashboard via an API.
|
|
226
|
+
|
|
227
|
+
Off-Site Dashboard:
|
|
228
|
+
|
|
229
|
+
Build a dashboard where creators can view and manage their orders.
|
|
230
|
+
|
|
231
|
+
Use a database to store order details and queue data.
|
|
232
|
+
|
|
233
|
+
API for Data Transfer:
|
|
234
|
+
|
|
235
|
+
Create an API endpoint to receive order data from the browser app.
|
|
236
|
+
|
|
237
|
+
Store the data in your database and update the dashboard in real-time.
|
|
238
|
+
|
|
239
|
+
Pre-Written Templates:
|
|
240
|
+
|
|
241
|
+
Provide creators with pre-written templates for locked messages to streamline communication with clients.
|
|
242
|
+
|
|
243
|
+
Testing and Deployment:
|
|
244
|
+
|
|
245
|
+
Test the browser app and dashboard with a small group of creators.
|
|
246
|
+
|
|
247
|
+
Deploy the dashboard and make the browser app available for download or installation.
|
|
248
|
+
|
|
249
|
+
Example Workflow
|
|
250
|
+
Client Requests Custom Content:
|
|
251
|
+
|
|
252
|
+
Client sends a message on OnlyFans: "Hi, Iâd like a custom video for $50."
|
|
253
|
+
|
|
254
|
+
Creator opens the browser app and inputs the order details.
|
|
255
|
+
|
|
256
|
+
Order Creation:
|
|
257
|
+
|
|
258
|
+
The browser app sends the order data to the off-site dashboard.
|
|
259
|
+
|
|
260
|
+
The dashboard adds the order to the creatorâs queue.
|
|
261
|
+
|
|
262
|
+
Creator Sends Locked Message:
|
|
263
|
+
|
|
264
|
+
Creator sends a locked message to the client: "Thanks for your request! Please pay $50 to unlock this message and confirm your order."
|
|
265
|
+
|
|
266
|
+
Client pays upfront to confirm the order.
|
|
267
|
+
|
|
268
|
+
Order Fulfillment:
|
|
269
|
+
|
|
270
|
+
Creator works on the custom content and sends it to the client as another locked message: "Your custom video is ready! Please pay $50 to unlock it."
|
|
271
|
+
|
|
272
|
+
Creator updates the order status in the dashboard to "Completed."
|
|
273
|
+
|
|
274
|
+
Compliance with OnlyFans TOS
|
|
275
|
+
Ensure that all payments and content delivery happen within OnlyFans.
|
|
276
|
+
|
|
277
|
+
Do not scrape data from OnlyFans or automate interactions programmatically.
|
|
278
|
+
|
|
279
|
+
Future Enhancements
|
|
280
|
+
Real-Time Sync:
|
|
281
|
+
|
|
282
|
+
If OnlyFans ever releases a public API, you can sync order data automatically between the browser app and the dashboard.
|
|
283
|
+
|
|
284
|
+
Analytics:
|
|
285
|
+
|
|
286
|
+
Add analytics to the dashboard to help creators track revenue, order volume, and client engagement.
|
|
287
|
+
|
|
288
|
+
Mobile Support:
|
|
289
|
+
|
|
290
|
+
Develop a mobile-friendly version of the browser app for creators who use OnlyFans on their phones.
|
|
291
|
+
|
|
292
|
+
This approach ensures a seamless experience for creators while keeping everything compliant with OnlyFans' TOS. Let me know if you need help with specific parts of the implementation, such as building the browser app or setting up the API!
|
|
293
|
+
>>>>>>> b306f3955273a5ba5e7561a24194ec677a12018b:10015_APP IDEA - Onlyfans.md
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
# adhd symptom
|
|
2
|
+
|
|
3
|
+
It's like you had a copy of yourself and they had all the same reasoning and thought processing and all that like you usually do but they just didn't have the actual content of the events itself, like you missed the second part of the update that contained the memories themselves so when it's happening you stay calm analytical, and reason through whatever u need to, so the answers themselves will be different but you don't get mad, upset or confused like someone with Alzheimer's
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# APP IDEA - GMAIL
|
|
2
|
+
|
|
3
|
+
how do i make a gmail add on, i wanted to make an add on that when you click sign in on the service you want, it vists the page, hits reset password and puts your email in, when the new reset password emails comes in it takes the link and generates 30 character password auto matically, changes your password to that and and then opens a new window and logs you in but never records the password so your account would be cirually impossible to crack
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
3. Steps to Build the Gmail Add-on
|
|
7
|
+
a. Set Up Google Workspace Add-on
|
|
8
|
+
Go to the Google Apps Script dashboard.
|
|
9
|
+
Create a new project and select "Gmail Add-on."
|
|
10
|
+
Define the appsscript.json file with metadata for your add-on.
|
|
11
|
+
b. Build the Add-on Interface
|
|
12
|
+
Use the Card Service API to create UI components.
|
|
13
|
+
Design a card where users can:
|
|
14
|
+
Choose a service (e.g., dropdown menu).
|
|
15
|
+
Enter their email address.
|
|
16
|
+
c. Integrate Gmail API
|
|
17
|
+
Request access to read incoming reset password emails.
|
|
18
|
+
Parse the reset password email to extract the reset link.
|
|
19
|
+
d. Automate Password Reset
|
|
20
|
+
Use a backend service (like Node.js with Puppeteer) to:
|
|
21
|
+
Visit the password reset page.
|
|
22
|
+
Enter the user’s email and submit the form.
|
|
23
|
+
Wait for the reset email and process the link.
|
|
24
|
+
e. Generate Secure Passwords
|
|
25
|
+
Use a cryptographic library (e.g., crypto in Node.js) to generate a 30-character random password.
|
|
26
|
+
f. Change Password and Log In
|
|
27
|
+
Automate the password change process using web automation.
|
|
28
|
+
Open a browser window with the new login session.
|
|
29
|
+
g. Security Best Practices
|
|
30
|
+
Do not store passwords or sensitive user information.
|
|
31
|
+
Use secure APIs and encrypted communications (e.g., HTTPS).
|
|
32
|
+
Ensure the add-on only operates with user consent.
|
|
33
|
+
h. Publish the Add-on
|
|
34
|
+
Test the add-on thoroughly to ensure it works as intended and complies with policies.
|
|
35
|
+
Submit the add-on for review through the Google Workspace Marketplace.
|
|
36
|
+
Challenges
|
|
37
|
+
Third-Party Website Restrictions: Many websites have anti-bot mechanisms like CAPTCHAs.
|
|
38
|
+
Security Risks: Handling sensitive data like reset links and passwords can be risky.
|
|
39
|
+
Policy Compliance: Automating actions like password resets may lead to the rejection of your add-on.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# container home - build mats
|
|
2
|
+
|
|
3
|
+
Mini split system 8000 installed
|
|
4
|
+
Shipping containers 4000 each
|
|
5
|
+
Build your own kitchen
|
|
6
|
+
Counters, flooring, cabinet doors, do same as desk but with no color and proper burner
|
|
7
|
+
Pot lights for lighting
|
|
8
|
+
On demand water heater 5000
|
|
9
|
+
Electrician 4000
|
|
10
|
+
Meral studs or wood studs
|
|
11
|
+
Foundation 5000
|
|
12
|
+
|
|
13
|
+
Ideas
|
|
14
|
+
Kitchen and bathroom downstairs that way all water is on in one container with living bedroom upstairs
|
|
15
|
+
Dark natural stone for shower and sink
|
|
16
|
+
Japanese burn method for floors counter tops stairs cabinet doors with polyurethane instead of swing doors do barn doors with same style
|
|
17
|
+
|
|
18
|
+
Can we get away with solar panels as far as cost goes?
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# client facing site meta and loader function
|
|
2
|
+
|
|
3
|
+
client_facing_site_meta_and_loader_function
|
|
4
|
+
import { type LoaderFunction, type MetaFunction, json } from '@remix-run/node';
|
|
5
|
+
import { dealerSelection, fullUserSelection } from '~/utils/loader.server';
|
|
6
|
+
import { prisma } from '~/libs';
|
|
7
|
+
|
|
8
|
+
export async function loader({ request, params }: LoaderFunction) {
|
|
9
|
+
const d = await prisma.dealer.findUnique({ where: { id: 1 }, select: dealerSelection });
|
|
10
|
+
const URLS = { page: 'About Us' };
|
|
11
|
+
return json({
|
|
12
|
+
data: {
|
|
13
|
+
d: d,
|
|
14
|
+
URLS: URLS
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export const meta: MetaFunction<typeof loader> = ({ data }) => {
|
|
20
|
+
const { d, URLS } = data;
|
|
21
|
+
return [
|
|
22
|
+
{ title: `${URLS.page} - ${d.dealerName}` },
|
|
23
|
+
{ name: "description", keywords: "Automotive Sales, dealership sales, automotive CRM, Service Center, Parts Department, Accessories Department, CRM, Dealership.", content: d.metaDesc, },
|
|
24
|
+
];
|
|
25
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Sabaak VSCode 1-8 players - private teams, solo q, duos q
|
|
2
|
+
|
|
3
|
+
- 1-8 players
|
|
4
|
+
- match sizes 2, 4, 6, 8
|
|
5
|
+
- private, invite only match servers
|
|
6
|
+
- queue to play with random users from vscode
|
|
7
|
+
- solo q
|
|
8
|
+
- explorer views
|
|
9
|
+
- friends list
|
|
10
|
+
- create private
|
|
11
|
+
- find public game
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# schema dump
|
|
2
|
+
|
|
3
|
+
model Script {
|
|
4
|
+
id String @id @default(cuid())
|
|
5
|
+
name String?
|
|
6
|
+
email String?
|
|
7
|
+
content String?
|
|
8
|
+
category String?
|
|
9
|
+
subCat String?
|
|
10
|
+
|
|
11
|
+
createdAt DateTime @default(now())
|
|
12
|
+
updatedAt DateTime @updatedAt
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
model SalespersonSched {
|
|
16
|
+
id String @id @default(cuid())
|
|
17
|
+
createdAt DateTime @default(now())
|
|
18
|
+
updatedAt DateTime @updatedAt
|
|
19
|
+
day String?
|
|
20
|
+
start DateTime?
|
|
21
|
+
end DateTime?
|
|
22
|
+
salespersonEmail String?
|
|
23
|
+
userEmail String?
|
|
24
|
+
title String?
|
|
25
|
+
resourceId String?
|
|
26
|
+
userName String?
|
|
27
|
+
userId String?
|
|
28
|
+
name String?
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
model DealerTasks {
|
|
32
|
+
id String @id @default(cuid())
|
|
33
|
+
createdAt DateTime @default(now())
|
|
34
|
+
updatedAt DateTime @updatedAt
|
|
35
|
+
dealerId String? // DEV-1
|
|
36
|
+
title String?
|
|
37
|
+
status String?
|
|
38
|
+
priority String?
|
|
39
|
+
userName String?
|
|
40
|
+
userEmail String?
|
|
41
|
+
dept String?
|
|
42
|
+
label String?
|
|
43
|
+
|
|
44
|
+
DealerTasksUpdates DealerTasksUpdates[]
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
model DealerTasksUpdates {
|
|
48
|
+
id String @id @default(cuid())
|
|
49
|
+
createdAt DateTime @default(now())
|
|
50
|
+
updatedAt DateTime @updatedAt
|
|
51
|
+
update String?
|
|
52
|
+
userName String?
|
|
53
|
+
userEmail String?
|
|
54
|
+
dealerTasksId String?
|
|
55
|
+
status String?
|
|
56
|
+
priority String?
|
|
57
|
+
label String?
|
|
58
|
+
|
|
59
|
+
DealerTasks DealerTasks? @relation(fields: [dealerTasksId], references: [id])
|
|
60
|
+
|
|
61
|
+
@@unique([dealerTasksId])
|
|
62
|
+
}
|
|
63
|
+
model Automation {
|
|
64
|
+
id String @id @default(cuid())
|
|
65
|
+
userEmail String?
|
|
66
|
+
type String?
|
|
67
|
+
financeId String?
|
|
68
|
+
clientfileId String?
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
model WorkOrderNotes {
|
|
72
|
+
id String @id @default(cuid())
|
|
73
|
+
createdAt DateTime @default(now())
|
|
74
|
+
updatedAt DateTime @updatedAt
|
|
75
|
+
|
|
76
|
+
body String?
|
|
77
|
+
userName String?
|
|
78
|
+
userEmail String?
|
|
79
|
+
|
|
80
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# clipboard very usefull should use asap within all apps
|
|
2
|
+
|
|
3
|
+
source https://github.com/remix-pwa/monorepo/blob/main/packages/client/lib/clipboard.ts
|
|
4
|
+
import { errorBlock } from './utils.js';
|
|
5
|
+
|
|
6
|
+
export const copyTextToClipboard = async (text: string): Promise<boolean> => {
|
|
7
|
+
try {
|
|
8
|
+
if (navigator && navigator.clipboard) {
|
|
9
|
+
await navigator.clipboard.writeText(text);
|
|
10
|
+
return true;
|
|
11
|
+
} else {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
} catch (err) {
|
|
15
|
+
console.error(err);
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export const readTextFromClipboard = async (): Promise<{
|
|
21
|
+
ok: boolean;
|
|
22
|
+
message?: string;
|
|
23
|
+
text: string | null;
|
|
24
|
+
}> => {
|
|
25
|
+
try {
|
|
26
|
+
if (navigator && navigator.clipboard) {
|
|
27
|
+
const text = await navigator.clipboard.readText();
|
|
28
|
+
return { ok: true, message: 'Read text successfully', text };
|
|
29
|
+
} else {
|
|
30
|
+
return { ok: false, message: 'Read Text API not supported', text: null };
|
|
31
|
+
}
|
|
32
|
+
} catch (error) {
|
|
33
|
+
return { ok: false, text: null };
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export const copyImageToClipboard = async (imgURL: string): Promise<boolean> => {
|
|
38
|
+
try {
|
|
39
|
+
if (navigator && navigator.clipboard) {
|
|
40
|
+
const data = await fetch(imgURL);
|
|
41
|
+
const blob = await data.blob();
|
|
42
|
+
|
|
43
|
+
await navigator.clipboard.write([
|
|
44
|
+
new ClipboardItem({
|
|
45
|
+
[blob.type]: blob,
|
|
46
|
+
}),
|
|
47
|
+
]);
|
|
48
|
+
|
|
49
|
+
return true;
|
|
50
|
+
} else {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
} catch (error) {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export const readFilesFromClipboard = async (): Promise<{ ok: boolean; message: string; files: File[] | null }> => {
|
|
59
|
+
try {
|
|
60
|
+
if (navigator && navigator.clipboard) {
|
|
61
|
+
const files = [] as File[];
|
|
62
|
+
const items = await navigator.clipboard.read();
|
|
63
|
+
|
|
64
|
+
for (const item of items) {
|
|
65
|
+
for (const type of item.types) {
|
|
66
|
+
const blob = await item.getType(type);
|
|
67
|
+
const file = new File([blob], 'clipboard-file', { type });
|
|
68
|
+
files.push(file);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return { ok: true, message: 'Read files from clipboard successfully', files };
|
|
73
|
+
} else {
|
|
74
|
+
return { ok: false, message: "Clipboard API not supported! Can't read files", files: null };
|
|
75
|
+
}
|
|
76
|
+
} catch (error) {
|
|
77
|
+
return { ...errorBlock(error), files: null };
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
export const clipboardSupported = async () => {
|
|
82
|
+
return navigator && 'clipboard' in navigator;
|
|
83
|
+
};
|
|
84
|
+
export function errorBlock(err: unknown) {
|
|
85
|
+
if (typeof err === 'string') {
|
|
86
|
+
return {
|
|
87
|
+
ok: false,
|
|
88
|
+
message: err,
|
|
89
|
+
};
|
|
90
|
+
} else if (err instanceof Error) {
|
|
91
|
+
return {
|
|
92
|
+
ok: false,
|
|
93
|
+
message: err.message,
|
|
94
|
+
};
|
|
95
|
+
} else {
|
|
96
|
+
return {
|
|
97
|
+
ok: false,
|
|
98
|
+
message: 'Unknown error',
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
}
|