robodev 0.10.0 → 0.12.0

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.
Files changed (197) hide show
  1. package/package.json +1 -1
  2. package/src/collect-files.test.ts +19 -0
  3. package/src/collect-files.ts +1 -0
  4. package/src/config.test.ts +26 -0
  5. package/src/config.ts +34 -5
  6. package/src/emit-starter.test.ts +54 -0
  7. package/src/emit-starter.ts +47 -13
  8. package/src/index.ts +37 -4
  9. package/templates/auth-chat/README.md +1 -1
  10. package/templates/auth-chat/api/health.ts +1 -1
  11. package/templates/auth-chat/api/me.ts +1 -1
  12. package/templates/auth-chat/api/messages.ts +1 -1
  13. package/templates/auth-chat/package.json +1 -1
  14. package/templates/auth-chat/src/main.tsx +5 -5
  15. package/templates/backend/README.md +1 -1
  16. package/templates/backend/api/health.ts +1 -1
  17. package/templates/backend/api/launch.ts +1 -1
  18. package/templates/backend/api/me.ts +1 -1
  19. package/templates/backend/api/motto.ts +1 -1
  20. package/templates/backend/api/planets/[id].ts +1 -1
  21. package/templates/backend/api/planets.ts +1 -1
  22. package/templates/backend/api/rockets.ts +1 -1
  23. package/templates/backend/package.json +1 -1
  24. package/templates/catalog.json +2 -2
  25. package/templates/empty/README.md +1 -1
  26. package/templates/empty/api/health.ts +1 -1
  27. package/templates/empty/package.json +1 -1
  28. package/templates/space/.config/local.spa.template.yml +27 -0
  29. package/templates/space/.oxlint-base.json +29 -0
  30. package/templates/space/.oxlintrc.json +78 -0
  31. package/templates/space/.rulesync/rules/frontend-api-boundary.md +36 -0
  32. package/templates/space/.rulesync/rules/frontend-component-structure.md +38 -0
  33. package/templates/space/.rulesync/rules/frontend-forms.md +32 -0
  34. package/templates/space/.rulesync/rules/frontend-notifications.md +24 -0
  35. package/templates/space/.rulesync/rules/frontend-povio-components.md +42 -0
  36. package/templates/space/.rulesync/rules/frontend-povio-ui.md +45 -0
  37. package/templates/space/.rulesync/rules/frontend-query-autocomplete.md +29 -0
  38. package/templates/space/.rulesync/rules/frontend-tables-and-lists.md +34 -0
  39. package/templates/space/.rulesync/rules/frontend-translations.md +26 -0
  40. package/templates/space/.rulesync/rules/project-overview.md +32 -0
  41. package/templates/space/.rulesync/rules/robodev-api.md +30 -0
  42. package/templates/space/.rulesync/rules/robodev-auth.md +40 -0
  43. package/templates/space/.rulesync/rules/robodev-database.md +22 -0
  44. package/templates/space/.rulesync/rules/role-based-app-structure.md +36 -0
  45. package/templates/space/.rulesync/skills/media-feature/SKILL.md +21 -0
  46. package/templates/space/.rulesync/skills/povio-ui-styling/SKILL.md +208 -0
  47. package/templates/space/.rulesync/skills/povio-ui-styling/agents/openai.yaml +4 -0
  48. package/templates/space/.rulesync/skills/robodev-api-route/SKILL.md +13 -0
  49. package/templates/space/.rulesync/skills/robodev-table/SKILL.md +12 -0
  50. package/templates/space/README.md +26 -7
  51. package/templates/space/api/_lib.ts +359 -0
  52. package/templates/space/api/aliens/labels.ts +19 -0
  53. package/templates/space/api/files/presigned-url.ts +48 -0
  54. package/templates/space/api/files/upload.ts +29 -0
  55. package/templates/space/api/planets/[id]/like.ts +36 -0
  56. package/templates/space/api/planets/[id].ts +56 -13
  57. package/templates/space/api/planets/paginate.ts +36 -0
  58. package/templates/space/api/planets.ts +52 -44
  59. package/templates/space/apps/fe/index.html +24 -0
  60. package/templates/space/apps/fe/openapi-codegen.config.ts +37 -0
  61. package/templates/space/apps/fe/package.json +82 -0
  62. package/templates/space/apps/fe/public/apple-touch-icon.png +0 -0
  63. package/templates/space/apps/fe/public/favicon-96x96.png +0 -0
  64. package/templates/space/apps/fe/public/favicon.ico +0 -0
  65. package/templates/space/apps/fe/public/favicon.svg +3 -0
  66. package/templates/space/apps/fe/public/site.webmanifest +21 -0
  67. package/templates/space/apps/fe/public/web-app-manifest-192x192.png +0 -0
  68. package/templates/space/apps/fe/public/web-app-manifest-512x512.png +0 -0
  69. package/templates/space/apps/fe/src/assets/fonts/GeneralSans-Bold.otf +0 -0
  70. package/templates/space/apps/fe/src/assets/fonts/GeneralSans-Medium.otf +0 -0
  71. package/templates/space/apps/fe/src/assets/fonts/GeneralSans-Regular.otf +0 -0
  72. package/templates/space/apps/fe/src/assets/fonts/GeneralSans-Semibold.otf +0 -0
  73. package/templates/space/apps/fe/src/assets/locales/en/translation.json +301 -0
  74. package/templates/space/apps/fe/src/assets/locales/sl/translation.json +301 -0
  75. package/templates/space/apps/fe/src/clients/app-rest-client.ts +15 -0
  76. package/templates/space/apps/fe/src/clients/auth-token-store.ts +101 -0
  77. package/templates/space/apps/fe/src/clients/rest/app-error-handler.ts +31 -0
  78. package/templates/space/apps/fe/src/clients/rest/interceptors/authorization-header.interceptor.ts +15 -0
  79. package/templates/space/apps/fe/src/clients/rest/interceptors/refresh-token.interceptor.ts +37 -0
  80. package/templates/space/apps/fe/src/clients/rest/interceptors/response.interceptor.ts +17 -0
  81. package/templates/space/apps/fe/src/components/404.tsx +18 -0
  82. package/templates/space/apps/fe/src/components/features/auth/AuthBrandPanel.tsx +60 -0
  83. package/templates/space/apps/fe/src/components/features/auth/AuthLayout.tsx +23 -0
  84. package/templates/space/apps/fe/src/components/features/auth/LoginPage.tsx +111 -0
  85. package/templates/space/apps/fe/src/components/features/auth/RegisterPage.tsx +143 -0
  86. package/templates/space/apps/fe/src/components/features/home/HomePage.tsx +21 -0
  87. package/templates/space/apps/fe/src/components/features/planets/details/PlanetDetailsPage.tsx +139 -0
  88. package/templates/space/apps/fe/src/components/features/planets/details/PlanetEditPage.tsx +266 -0
  89. package/templates/space/apps/fe/src/components/features/planets/feed/PlanetFeedCard.tsx +131 -0
  90. package/templates/space/apps/fe/src/components/features/planets/feed/PlanetsFeedPage.tsx +119 -0
  91. package/templates/space/apps/fe/src/components/features/planets/list/PlanetCard.tsx +89 -0
  92. package/templates/space/apps/fe/src/components/features/planets/list/PlanetCreateModal.tsx +179 -0
  93. package/templates/space/apps/fe/src/components/features/planets/list/PlanetsFilters.css +3 -0
  94. package/templates/space/apps/fe/src/components/features/planets/list/PlanetsFilters.tsx +73 -0
  95. package/templates/space/apps/fe/src/components/features/planets/list/PlanetsGridPage.tsx +51 -0
  96. package/templates/space/apps/fe/src/components/features/planets/list/PlanetsInfiniteTablePage.tsx +79 -0
  97. package/templates/space/apps/fe/src/components/features/planets/list/PlanetsPage.tsx +65 -0
  98. package/templates/space/apps/fe/src/components/features/planets/list/PlanetsTablePage.tsx +72 -0
  99. package/templates/space/apps/fe/src/components/features/planets/list/PlanetsTableSummary.tsx +29 -0
  100. package/templates/space/apps/fe/src/components/features/planets/list/PlanetsViewTabs.tsx +79 -0
  101. package/templates/space/apps/fe/src/components/features/planets/list/table/PlanetsTable.tsx +30 -0
  102. package/templates/space/apps/fe/src/components/features/planets/list/table/PlanetsTableActions.tsx +64 -0
  103. package/templates/space/apps/fe/src/components/features/planets/list/table/PlanetsTableInfinite.tsx +36 -0
  104. package/templates/space/apps/fe/src/components/features/planets/list/table/planetsTableColumns.tsx +72 -0
  105. package/templates/space/apps/fe/src/components/features/planets/list/table/usePlanetTableFilters.tsx +102 -0
  106. package/templates/space/apps/fe/src/components/features/profile/ProfilePage.tsx +96 -0
  107. package/templates/space/apps/fe/src/components/googleAnalytics/GoogleAnalytics.tsx +35 -0
  108. package/templates/space/apps/fe/src/components/layout/AppLayout.tsx +19 -0
  109. package/templates/space/apps/fe/src/components/layout/app-header/AppHeader.tsx +93 -0
  110. package/templates/space/apps/fe/src/components/layout/app-header/MobileNavigation.tsx +53 -0
  111. package/templates/space/apps/fe/src/components/layout/app-header/NavLink.tsx +29 -0
  112. package/templates/space/apps/fe/src/components/shared/branding/BrandLogo.tsx +13 -0
  113. package/templates/space/apps/fe/src/components/shared/error/ErrorFallback.tsx +43 -0
  114. package/templates/space/apps/fe/src/components/shared/error/ErrorText.tsx +20 -0
  115. package/templates/space/apps/fe/src/components/shared/error/NotFound.tsx +36 -0
  116. package/templates/space/apps/fe/src/components/shared/forms/RequiredLabel.tsx +21 -0
  117. package/templates/space/apps/fe/src/components/shared/forms/RowInputWrapper.tsx +50 -0
  118. package/templates/space/apps/fe/src/components/shared/head/AppHead.tsx +32 -0
  119. package/templates/space/apps/fe/src/components/shared/head/DefaultAppHead.tsx +34 -0
  120. package/templates/space/apps/fe/src/components/shared/layout/LoadingState.tsx +9 -0
  121. package/templates/space/apps/fe/src/components/shared/layout/ThinPageWrapper.tsx +5 -0
  122. package/templates/space/apps/fe/src/components/shared/page/PageHeader.tsx +69 -0
  123. package/templates/space/apps/fe/src/components/shared/ui/Card.tsx +60 -0
  124. package/templates/space/apps/fe/src/components/shared/ui/GoogleLoginButton.tsx +19 -0
  125. package/templates/space/apps/fe/src/components/shared/ui/RequiredLabel.tsx +22 -0
  126. package/templates/space/apps/fe/src/components/shared/ui/TableActions.tsx +22 -0
  127. package/templates/space/apps/fe/src/config/app.config.ts +35 -0
  128. package/templates/space/apps/fe/src/config/i18n.ts +43 -0
  129. package/templates/space/apps/fe/src/config/inits/a11y.ts +14 -0
  130. package/templates/space/apps/fe/src/config/inits/logger.ts +7 -0
  131. package/templates/space/apps/fe/src/config/inits/sentry.ts +21 -0
  132. package/templates/space/apps/fe/src/config/jwt.config.ts +2 -0
  133. package/templates/space/apps/fe/src/config/query.config.ts +20 -0
  134. package/templates/space/apps/fe/src/hooks/useAuth.ts +5 -0
  135. package/templates/space/apps/fe/src/main.tsx +52 -0
  136. package/templates/space/apps/fe/src/pages/(guest)/login.tsx +23 -0
  137. package/templates/space/apps/fe/src/pages/(guest)/register.tsx +23 -0
  138. package/templates/space/apps/fe/src/pages/(guest)/route.tsx +18 -0
  139. package/templates/space/apps/fe/src/pages/(private)/index.tsx +23 -0
  140. package/templates/space/apps/fe/src/pages/(private)/planets/$id/edit.tsx +53 -0
  141. package/templates/space/apps/fe/src/pages/(private)/planets/$id/index.tsx +41 -0
  142. package/templates/space/apps/fe/src/pages/(private)/planets/index.tsx +24 -0
  143. package/templates/space/apps/fe/src/pages/(private)/planets-feed.tsx +23 -0
  144. package/templates/space/apps/fe/src/pages/(private)/profile.tsx +23 -0
  145. package/templates/space/apps/fe/src/pages/(private)/route.tsx +18 -0
  146. package/templates/space/apps/fe/src/pages/(public)/auth.tsx +37 -0
  147. package/templates/space/apps/fe/src/pages/(public)/route.tsx +9 -0
  148. package/templates/space/apps/fe/src/pages/__root.tsx +164 -0
  149. package/templates/space/apps/fe/src/providers/AppErrorBoundary.tsx +10 -0
  150. package/templates/space/apps/fe/src/providers/OpenApiRuntimeProvider.tsx +31 -0
  151. package/templates/space/apps/fe/src/providers/index.tsx +44 -0
  152. package/templates/space/apps/fe/src/providers/jwt.provider.tsx +95 -0
  153. package/templates/space/apps/fe/src/routeTree.gen.ts +309 -0
  154. package/templates/space/apps/fe/src/styles/base.css +103 -0
  155. package/templates/space/apps/fe/src/styles/fonts/fonts.tsx +10 -0
  156. package/templates/space/apps/fe/src/styles/fonts/general-sans.css +31 -0
  157. package/templates/space/apps/fe/src/styles/globals.css +28 -0
  158. package/templates/space/apps/fe/src/styles/overrides/defaults/button.override.ts +536 -0
  159. package/templates/space/apps/fe/src/styles/overrides/defaults/checkbox.override.ts +71 -0
  160. package/templates/space/apps/fe/src/styles/overrides/defaults/input.override.ts +252 -0
  161. package/templates/space/apps/fe/src/styles/overrides/defaults/label.override.ts +91 -0
  162. package/templates/space/apps/fe/src/styles/overrides/defaults/modal.override.ts +57 -0
  163. package/templates/space/apps/fe/src/styles/overrides/defaults/radio.override.ts +46 -0
  164. package/templates/space/apps/fe/src/styles/overrides/defaults/table.override.ts +104 -0
  165. package/templates/space/apps/fe/src/styles/overrides/defaults/tag.override.ts +66 -0
  166. package/templates/space/apps/fe/src/styles/overrides/defaults/typography.override.ts +115 -0
  167. package/templates/space/apps/fe/src/styles/overrides/outline.clsx.ts +10 -0
  168. package/templates/space/apps/fe/src/styles/overrides/uiOverrides.override.ts +60 -0
  169. package/templates/space/apps/fe/src/styles/theme.css +2177 -0
  170. package/templates/space/apps/fe/src/types/i18next.d.ts +12 -0
  171. package/templates/space/apps/fe/src/types/table.d.ts +17 -0
  172. package/templates/space/apps/fe/src/types/ui.d.ts +26 -0
  173. package/templates/space/apps/fe/src/types/vite-env.d.ts +20 -0
  174. package/templates/space/apps/fe/src/utils/date.utils.ts +17 -0
  175. package/templates/space/apps/fe/src/utils/image-fallback.ts +9 -0
  176. package/templates/space/apps/fe/src/utils/media-upload.ts +63 -0
  177. package/templates/space/apps/fe/src/utils/number.utils.ts +12 -0
  178. package/templates/space/apps/fe/src/utils/string.utils.ts +5 -0
  179. package/templates/space/apps/fe/src/vite-env.d.ts +1 -0
  180. package/templates/space/apps/fe/tsconfig.app.json +32 -0
  181. package/templates/space/apps/fe/tsconfig.json +9 -0
  182. package/templates/space/apps/fe/tsconfig.node.json +31 -0
  183. package/templates/space/apps/fe/vite.config.ts +94 -0
  184. package/templates/space/database.ts +33 -13
  185. package/templates/space/openapi.json +1819 -0
  186. package/templates/space/oxfmt.config.js +23 -0
  187. package/templates/space/package.json +6 -13
  188. package/templates/space/rulesync.jsonc +18 -0
  189. package/templates/space/tsconfig.json +2 -4
  190. package/templates/space/api/health.ts +0 -7
  191. package/templates/space/api/launch.ts +0 -29
  192. package/templates/space/api/me.ts +0 -14
  193. package/templates/space/api/motto.ts +0 -9
  194. package/templates/space/api/rockets.ts +0 -43
  195. package/templates/space/index.html +0 -138
  196. package/templates/space/src/main.tsx +0 -229
  197. package/templates/space/vite.config.ts +0 -7
@@ -0,0 +1,301 @@
1
+ {
2
+ "appName": "Tiny Template",
3
+ "appDescription": "A template for building web applications",
4
+ "shared": {
5
+ "notFound": {
6
+ "head": {
7
+ "title": "Page not found",
8
+ "description": "The page you are looking for doesn't exist."
9
+ },
10
+ "heading": "Page not found",
11
+ "subheading": "The page you are looking for doesn't exist.",
12
+ "homeBtn": "Go to home"
13
+ },
14
+ "errorFallback": {
15
+ "heading": "Something went wrong",
16
+ "subheading": "Error: {{error}}",
17
+ "retryBtn": "Try again"
18
+ },
19
+ "apiErrors": {
20
+ "requestFailed": "Request failed: {{error}}",
21
+ "unknown": "An unknown error occurred."
22
+ },
23
+ "seedData": {
24
+ "actionButton": "Reset seed data",
25
+ "confirmation": {
26
+ "heading": "Reset seed data?",
27
+ "description": "This will reset all local data to the initial seed state.",
28
+ "confirm": "Reset",
29
+ "cancel": "Cancel"
30
+ }
31
+ },
32
+ "actions": {
33
+ "back": "Back"
34
+ },
35
+ "fakeMailbox": {
36
+ "title": "Fake mailbox",
37
+ "open": "Open fake mailbox",
38
+ "close": "Close fake mailbox",
39
+ "empty": "No emails yet.",
40
+ "from": "From",
41
+ "to": "To",
42
+ "cc": "Cc",
43
+ "bcc": "Bcc",
44
+ "replyTo": "Reply to",
45
+ "openPopup": "Open popup",
46
+ "popupBlocked": {
47
+ "heading": "Email popup was blocked",
48
+ "description": "Your browser blocked the automatic email window. Allow popups for this site or open this message now.",
49
+ "open": "Open email",
50
+ "cancel": "Keep unread"
51
+ }
52
+ }
53
+ },
54
+ "auth": {
55
+ "wrapper": {
56
+ "title": "Administration portal",
57
+ "description": "Tiny",
58
+ "watermark": "© {{year}} Tiny • Developed and maintained by Povio"
59
+ },
60
+ "shared": {
61
+ "errors": {
62
+ "invalidCredentials": "Invalid email or password.",
63
+ "userAlreadyExists": "An account with this email already exists.",
64
+ "identityNotFound": "We could not find this account.",
65
+ "notConfirmed": "This account has not been confirmed yet."
66
+ }
67
+ },
68
+ "login": {
69
+ "head": {
70
+ "title": "Login",
71
+ "description": "Login to your account"
72
+ },
73
+ "form": {
74
+ "title": "Login",
75
+ "email": "Email",
76
+ "emailPlaceholder": "Enter your email",
77
+ "password": "Password",
78
+ "passwordPlaceholder": "Enter your password",
79
+ "submit": "Login",
80
+ "submitLoading": "Logging in...",
81
+ "demoLogin": "Login as demo user",
82
+ "noAccount": "Don't have an account?",
83
+ "registerLink": "Register",
84
+ "loginFailed": "Login failed",
85
+ "resetSeedData": "Reset seed data"
86
+ },
87
+ "confirmations": {
88
+ "resetSeed": {
89
+ "heading": "Reset seed data?",
90
+ "description": "This will reset all local data to the initial seed state.",
91
+ "confirm": "Reset",
92
+ "cancel": "Cancel"
93
+ }
94
+ }
95
+ },
96
+ "register": {
97
+ "head": {
98
+ "title": "Register",
99
+ "description": "Create a new account"
100
+ },
101
+ "form": {
102
+ "title": "Register",
103
+ "description": "Create a new account",
104
+ "email": "Email",
105
+ "emailPlaceholder": "Enter your email",
106
+ "name": "Name",
107
+ "namePlaceholder": "Enter your name",
108
+ "password": "Password",
109
+ "passwordPlaceholder": "Enter your password",
110
+ "confirmPassword": "Confirm password",
111
+ "confirmPasswordPlaceholder": "Confirm your password",
112
+ "confirmPasswordRequired": "Confirm password is required",
113
+ "passwordsDoNotMatch": "Passwords do not match",
114
+ "passwordRequirements": "Password must be at least 12 characters long.",
115
+ "submit": "Register",
116
+ "registrationFailed": "Registration failed",
117
+ "hasAccount": "Already have an account?",
118
+ "loginLink": "Login"
119
+ }
120
+ },
121
+ "setPassword": {
122
+ "form": {
123
+ "title": "Set your password",
124
+ "welcome": "Welcome, {{firstName}} {{lastName}}. Please set your password to complete your account.",
125
+ "tokenNote": "Enter the invitation token you received by email.",
126
+ "token": "Invitation token",
127
+ "tokenPlaceholder": "Enter your invitation token",
128
+ "tokenChecking": "Checking token...",
129
+ "tokenError": "{{error}}",
130
+ "invalidToken": "Invalid or expired token",
131
+ "email": "Email",
132
+ "password": "Password",
133
+ "passwordPlaceholder": "Enter your password",
134
+ "confirmPassword": "Confirm password",
135
+ "confirmPasswordPlaceholder": "Confirm your password",
136
+ "passwordRequirements": "Password must be at least 8 characters long.",
137
+ "submit": "Set password",
138
+ "setPasswordFailed": "Setting password failed",
139
+ "hasPassword": "Already have a password?",
140
+ "loginLink": "Login"
141
+ }
142
+ }
143
+ },
144
+ "layout": {
145
+ "header": {
146
+ "logo": "Tiny",
147
+ "openMenu": "Open menu",
148
+ "closeMenu": "Close menu",
149
+ "nav": {
150
+ "home": "Home",
151
+ "planets": "Planets",
152
+ "planetsFeed": "Planets feed"
153
+ },
154
+ "profile": "Profile",
155
+ "logout": "Logout"
156
+ }
157
+ },
158
+ "home": {
159
+ "head": {
160
+ "title": "Home",
161
+ "description": "Welcome to the app!"
162
+ },
163
+ "title": "Home",
164
+ "message": "Welcome to the app!"
165
+ },
166
+ "planets": {
167
+ "detail": {
168
+ "back": "Back to Planets",
169
+ "notFound": "Planet not found.",
170
+ "description": "Description",
171
+ "details": "Details",
172
+ "created": "Created",
173
+ "updated": "Last updated",
174
+ "discoveryDate": "Discovery date",
175
+ "createdBy": "Created by"
176
+ },
177
+ "page": {
178
+ "title": "Planets",
179
+ "headTitle": "Planets",
180
+ "headDescription": "Manage your planets",
181
+ "addPlanet": "Add planet",
182
+ "empty": "No planets yet. Add your first one."
183
+ },
184
+ "views": {
185
+ "label": "Planet view",
186
+ "grid": "Grid",
187
+ "table": "Table",
188
+ "infinite": "Infinite table"
189
+ },
190
+ "filters": {
191
+ "search": "Search",
192
+ "alien": "Alien",
193
+ "alienPlaceholder": "All aliens",
194
+ "discoveryDate": "Discovery date",
195
+ "discoveryDatePlaceholder": "Any date",
196
+ "clearAll": "Clear all"
197
+ },
198
+ "create": {
199
+ "title": "Create planet",
200
+ "name": "Name",
201
+ "namePlaceholder": "Planet name",
202
+ "alien": "Alien",
203
+ "alienPlaceholder": "Select an alien",
204
+ "discoveryDate": "Discovery date",
205
+ "discoveryDatePlaceholder": "Select a discovery date",
206
+ "description": "Description",
207
+ "descriptionPlaceholder": "Optional description",
208
+ "image": "Image",
209
+ "imageEmptyText": "No image",
210
+ "imageUploadText": "Upload",
211
+ "imageBrowseText": "Browse",
212
+ "submit": "Create",
213
+ "cancel": "Cancel",
214
+ "success": "Planet created",
215
+ "error": "Failed to create planet"
216
+ },
217
+ "edit": {
218
+ "title": "Edit planet",
219
+ "name": "Name",
220
+ "namePlaceholder": "Planet name",
221
+ "alien": "Alien",
222
+ "alienPlaceholder": "Select an alien",
223
+ "discoveryDate": "Discovery date",
224
+ "discoveryDatePlaceholder": "Select a discovery date",
225
+ "description": "Description",
226
+ "descriptionPlaceholder": "Optional description",
227
+ "image": "Image",
228
+ "imageEmptyText": "No image",
229
+ "imageUploadText": "Upload",
230
+ "imageBrowseText": "Browse",
231
+ "submit": "Save",
232
+ "cancel": "Cancel",
233
+ "success": "Planet updated",
234
+ "error": "Failed to update planet"
235
+ },
236
+ "card": {
237
+ "createdBy": "Created by {{name}} on {{date}}",
238
+ "alien": "Alien: {{name}}",
239
+ "unknownCreator": "Unknown"
240
+ },
241
+ "table": {
242
+ "allLoaded": "All results are shown",
243
+ "showing": "Showing {{displayed}} of {{total}}",
244
+ "name": "Name",
245
+ "description": "Description",
246
+ "alien": "Alien",
247
+ "discoveryDate": "Discovery date",
248
+ "creator": "Creator",
249
+ "actions": "Actions"
250
+ },
251
+ "actions": {
252
+ "edit": "Edit",
253
+ "remove": "Remove"
254
+ },
255
+ "removeConfirm": {
256
+ "heading": "Remove planet?",
257
+ "description": "Are you sure you want to remove \"{{name}}\"? This cannot be undone.",
258
+ "confirm": "Remove",
259
+ "cancel": "Cancel",
260
+ "success": "Planet removed",
261
+ "error": "Failed to remove planet"
262
+ }
263
+ },
264
+ "planetsFeed": {
265
+ "page": {
266
+ "title": "Planets feed",
267
+ "headTitle": "Planets feed",
268
+ "headDescription": "Scroll through planets and their aliens",
269
+ "empty": "No planets to show.",
270
+ "end": "You reached the end."
271
+ },
272
+ "card": {
273
+ "like": "Like ({{count}})",
274
+ "liked": "Liked ({{count}})",
275
+ "discovered": "Discovered {{date}}",
276
+ "alienLabel": "Alien on this planet",
277
+ "creatorLabel": "Created by",
278
+ "noAlien": "No alien assigned"
279
+ }
280
+ },
281
+ "profile": {
282
+ "head": {
283
+ "title": "Profile",
284
+ "description": "Your profile"
285
+ },
286
+ "form": {
287
+ "title": "Profile",
288
+ "description": "Update your profile details",
289
+ "email": "Email",
290
+ "emailPlaceholder": "Enter your email",
291
+ "name": "Name",
292
+ "namePlaceholder": "Enter your name",
293
+ "submit": "Save",
294
+ "submitLoading": "Saving...",
295
+ "notifications": {
296
+ "success": "Profile updated",
297
+ "error": "Failed to update profile"
298
+ }
299
+ }
300
+ }
301
+ }
@@ -0,0 +1,301 @@
1
+ {
2
+ "appName": "Tiny Template",
3
+ "appDescription": "A template for building web applications",
4
+ "shared": {
5
+ "notFound": {
6
+ "head": {
7
+ "title": "Stran ni bila najdena",
8
+ "description": "Stran, ki jo iščete, ne obstaja."
9
+ },
10
+ "heading": "Stran ni bila najdena",
11
+ "subheading": "Stran, ki jo iščete, ne obstaja.",
12
+ "homeBtn": "Na domačo stran"
13
+ },
14
+ "errorFallback": {
15
+ "heading": "Nekaj je šlo narobe",
16
+ "subheading": "Napaka: {{error}}",
17
+ "retryBtn": "Poskusi znova"
18
+ },
19
+ "apiErrors": {
20
+ "requestFailed": "Zahteva ni uspela: {{error}}",
21
+ "unknown": "Prišlo je do neznane napake."
22
+ },
23
+ "seedData": {
24
+ "actionButton": "Ponastavi začetne podatke",
25
+ "confirmation": {
26
+ "heading": "Ponastaviti začetne podatke?",
27
+ "description": "Vsi lokalni podatki bodo ponastavljeni na začetno stanje.",
28
+ "confirm": "Ponastavi",
29
+ "cancel": "Prekliči"
30
+ }
31
+ },
32
+ "actions": {
33
+ "back": "Nazaj"
34
+ },
35
+ "fakeMailbox": {
36
+ "title": "Lažni poštni predal",
37
+ "open": "Odpri lažni poštni predal",
38
+ "close": "Zapri lažni poštni predal",
39
+ "empty": "Ni prejetih e-poštnih sporočil.",
40
+ "from": "Od",
41
+ "to": "Za",
42
+ "cc": "Kp",
43
+ "bcc": "Skp",
44
+ "replyTo": "Odgovori na",
45
+ "openPopup": "Odpri pojavno okno",
46
+ "popupBlocked": {
47
+ "heading": "Pojavno okno e-pošte je blokirano",
48
+ "description": "Brskalnik je blokiral samodejno okno e-pošte. Dovolite pojavna okna za to stran ali sporočilo odprite zdaj.",
49
+ "open": "Odpri e-pošto",
50
+ "cancel": "Pusti neprebrano"
51
+ }
52
+ }
53
+ },
54
+ "auth": {
55
+ "wrapper": {
56
+ "title": "Administrativni portal",
57
+ "description": "Tiny",
58
+ "watermark": "© {{year}} Tiny • Razvija in vzdržuje Povio"
59
+ },
60
+ "shared": {
61
+ "errors": {
62
+ "invalidCredentials": "Neveljaven e-poštni naslov ali geslo.",
63
+ "userAlreadyExists": "Račun s tem e-poštnim naslovom že obstaja.",
64
+ "identityNotFound": "Tega računa ni bilo mogoče najti.",
65
+ "notConfirmed": "Ta račun še ni potrjen."
66
+ }
67
+ },
68
+ "login": {
69
+ "head": {
70
+ "title": "Prijava",
71
+ "description": "Prijavite se v svoj račun"
72
+ },
73
+ "form": {
74
+ "title": "Prijava",
75
+ "email": "E-pošta",
76
+ "emailPlaceholder": "Vnesite svoj e-poštni naslov",
77
+ "password": "Geslo",
78
+ "passwordPlaceholder": "Vnesite svoje geslo",
79
+ "submit": "Prijava",
80
+ "submitLoading": "Prijavljanje...",
81
+ "demoLogin": "Prijava kot demo uporabnik",
82
+ "noAccount": "Nimate računa?",
83
+ "registerLink": "Registracija",
84
+ "loginFailed": "Prijava ni uspela",
85
+ "resetSeedData": "Ponastavi začetne podatke"
86
+ },
87
+ "confirmations": {
88
+ "resetSeed": {
89
+ "heading": "Ponastaviti začetne podatke?",
90
+ "description": "Vsi lokalni podatki bodo ponastavljeni na začetno stanje.",
91
+ "confirm": "Ponastavi",
92
+ "cancel": "Prekliči"
93
+ }
94
+ }
95
+ },
96
+ "register": {
97
+ "head": {
98
+ "title": "Registracija",
99
+ "description": "Ustvarite nov račun"
100
+ },
101
+ "form": {
102
+ "title": "Registracija",
103
+ "description": "Ustvarite nov račun",
104
+ "email": "E-pošta",
105
+ "emailPlaceholder": "Vnesite svoj e-poštni naslov",
106
+ "name": "Ime",
107
+ "namePlaceholder": "Vnesite svoje ime",
108
+ "password": "Geslo",
109
+ "passwordPlaceholder": "Vnesite svoje geslo",
110
+ "confirmPassword": "Potrdite geslo",
111
+ "confirmPasswordPlaceholder": "Potrdite svoje geslo",
112
+ "confirmPasswordRequired": "Potrditev gesla je obvezna",
113
+ "passwordsDoNotMatch": "Gesli se ne ujemata",
114
+ "passwordRequirements": "Geslo mora vsebovati vsaj 12 znakov.",
115
+ "submit": "Registriraj se",
116
+ "registrationFailed": "Registracija ni uspela",
117
+ "hasAccount": "Že imate račun?",
118
+ "loginLink": "Prijava"
119
+ }
120
+ },
121
+ "setPassword": {
122
+ "form": {
123
+ "title": "Nastavite svoje geslo",
124
+ "welcome": "Dobrodošli, {{firstName}} {{lastName}}. Nastavite geslo, da dokončate nastavitev računa.",
125
+ "tokenNote": "Vnesite povabilni žeton, ki ste ga prejeli po e-pošti.",
126
+ "token": "Povabilni žeton",
127
+ "tokenPlaceholder": "Vnesite svoj povabilni žeton",
128
+ "tokenChecking": "Preverjanje žetona...",
129
+ "tokenError": "{{error}}",
130
+ "invalidToken": "Neveljaven ali potekel žeton",
131
+ "email": "E-pošta",
132
+ "password": "Geslo",
133
+ "passwordPlaceholder": "Vnesite svoje geslo",
134
+ "confirmPassword": "Potrdite geslo",
135
+ "confirmPasswordPlaceholder": "Potrdite svoje geslo",
136
+ "passwordRequirements": "Geslo mora vsebovati vsaj 8 znakov.",
137
+ "submit": "Nastavi geslo",
138
+ "setPasswordFailed": "Nastavitev gesla ni uspela",
139
+ "hasPassword": "Že imate geslo?",
140
+ "loginLink": "Prijava"
141
+ }
142
+ }
143
+ },
144
+ "layout": {
145
+ "header": {
146
+ "logo": "Tiny",
147
+ "openMenu": "Odpri meni",
148
+ "closeMenu": "Zapri meni",
149
+ "nav": {
150
+ "home": "Domov",
151
+ "planets": "Planeti",
152
+ "planetsFeed": "Tok planetov"
153
+ },
154
+ "profile": "Profil",
155
+ "logout": "Odjava"
156
+ }
157
+ },
158
+ "home": {
159
+ "head": {
160
+ "title": "Domov",
161
+ "description": "Dobrodošli v aplikaciji!"
162
+ },
163
+ "title": "Domov",
164
+ "message": "Dobrodošli v aplikaciji!"
165
+ },
166
+ "planets": {
167
+ "detail": {
168
+ "back": "Nazaj na planete",
169
+ "notFound": "Planet ni bil najden.",
170
+ "description": "Opis",
171
+ "details": "Podrobnosti",
172
+ "created": "Ustvarjeno",
173
+ "updated": "Zadnja posodobitev",
174
+ "discoveryDate": "Datum odkritja",
175
+ "createdBy": "Ustvaril"
176
+ },
177
+ "page": {
178
+ "title": "Planeti",
179
+ "headTitle": "Planeti",
180
+ "headDescription": "Upravljanje planetov",
181
+ "addPlanet": "Dodaj planet",
182
+ "empty": "Planetov še ni. Dodajte prvega."
183
+ },
184
+ "views": {
185
+ "label": "Prikaz planetov",
186
+ "grid": "Mreža",
187
+ "table": "Tabela",
188
+ "infinite": "Neskončna tabela"
189
+ },
190
+ "filters": {
191
+ "search": "Iskanje",
192
+ "alien": "Tujec",
193
+ "alienPlaceholder": "Vsi tujci",
194
+ "discoveryDate": "Datum odkritja",
195
+ "discoveryDatePlaceholder": "Kateri koli datum",
196
+ "clearAll": "Počisti vse"
197
+ },
198
+ "create": {
199
+ "title": "Ustvari planet",
200
+ "name": "Ime",
201
+ "namePlaceholder": "Ime planeta",
202
+ "alien": "Tujec",
203
+ "alienPlaceholder": "Izberite tujca",
204
+ "discoveryDate": "Datum odkritja",
205
+ "discoveryDatePlaceholder": "Izberite datum odkritja",
206
+ "description": "Opis",
207
+ "descriptionPlaceholder": "Opcijski opis",
208
+ "image": "Slika",
209
+ "imageEmptyText": "Brez slike",
210
+ "imageUploadText": "Naloži",
211
+ "imageBrowseText": "Brskaj",
212
+ "submit": "Ustvari",
213
+ "cancel": "Prekliči",
214
+ "success": "Planet ustvarjen",
215
+ "error": "Ustvarjanje planeta ni uspelo"
216
+ },
217
+ "edit": {
218
+ "title": "Uredi planet",
219
+ "name": "Ime",
220
+ "namePlaceholder": "Ime planeta",
221
+ "alien": "Tujec",
222
+ "alienPlaceholder": "Izberite tujca",
223
+ "discoveryDate": "Datum odkritja",
224
+ "discoveryDatePlaceholder": "Izberite datum odkritja",
225
+ "description": "Opis",
226
+ "descriptionPlaceholder": "Opcijski opis",
227
+ "image": "Slika",
228
+ "imageEmptyText": "Brez slike",
229
+ "imageUploadText": "Naloži",
230
+ "imageBrowseText": "Brskaj",
231
+ "submit": "Shrani",
232
+ "cancel": "Prekliči",
233
+ "success": "Planet posodobljen",
234
+ "error": "Posodobitev planeta ni uspela"
235
+ },
236
+ "card": {
237
+ "createdBy": "Ustvaril {{name}} dne {{date}}",
238
+ "alien": "Tujec: {{name}}",
239
+ "unknownCreator": "Neznano"
240
+ },
241
+ "table": {
242
+ "allLoaded": "Prikazani so vsi zadetki",
243
+ "showing": "Prikaz {{displayed}} od {{total}}",
244
+ "name": "Ime",
245
+ "description": "Opis",
246
+ "alien": "Tujec",
247
+ "discoveryDate": "Datum odkritja",
248
+ "creator": "Ustvaril",
249
+ "actions": "Dejanja"
250
+ },
251
+ "actions": {
252
+ "edit": "Uredi",
253
+ "remove": "Odstrani"
254
+ },
255
+ "removeConfirm": {
256
+ "heading": "Odstraniti planet?",
257
+ "description": "Ali ste prepričani, da želite odstraniti \"{{name}}\"? Tega ni mogoče razveljaviti.",
258
+ "confirm": "Odstrani",
259
+ "cancel": "Prekliči",
260
+ "success": "Planet odstranjen",
261
+ "error": "Odstranitev planeta ni uspela"
262
+ }
263
+ },
264
+ "planetsFeed": {
265
+ "page": {
266
+ "title": "Tok planetov",
267
+ "headTitle": "Tok planetov",
268
+ "headDescription": "Pomikajte se po planetih in njihovih tujcih",
269
+ "empty": "Ni planetov za prikaz.",
270
+ "end": "Dosegli ste konec."
271
+ },
272
+ "card": {
273
+ "like": "Vsec mi je ({{count}})",
274
+ "liked": "Vsec mi je ({{count}})",
275
+ "discovered": "Odkrito {{date}}",
276
+ "alienLabel": "Tujec na tem planetu",
277
+ "creatorLabel": "Ustvaril",
278
+ "noAlien": "Tujec ni dodeljen"
279
+ }
280
+ },
281
+ "profile": {
282
+ "head": {
283
+ "title": "Profil",
284
+ "description": "Vaš profil"
285
+ },
286
+ "form": {
287
+ "title": "Profil",
288
+ "description": "Posodobite podatke profila",
289
+ "email": "E-pošta",
290
+ "emailPlaceholder": "Vnesite svoj e-poštni naslov",
291
+ "name": "Ime",
292
+ "namePlaceholder": "Vnesite svoje ime",
293
+ "submit": "Shrani",
294
+ "submitLoading": "Shranjevanje...",
295
+ "notifications": {
296
+ "success": "Profil posodobljen",
297
+ "error": "Posodobitev profila ni uspela"
298
+ }
299
+ }
300
+ }
301
+ }
@@ -0,0 +1,15 @@
1
+ import { RestClient } from "@povio/openapi-codegen-cli";
2
+
3
+ import { AuthorizationHeaderInterceptor } from "@/clients/rest/interceptors/authorization-header.interceptor";
4
+ import { RefreshTokenInterceptor } from "@/clients/rest/interceptors/refresh-token.interceptor";
5
+ import { ResponseInterceptor } from "@/clients/rest/interceptors/response.interceptor";
6
+ import { AppConfig } from "@/config/app.config";
7
+ import { AppErrorHandler } from "@/clients/rest/app-error-handler";
8
+
9
+ export const AppRestClient = new RestClient({
10
+ config: {
11
+ baseURL: AppConfig.api.url,
12
+ },
13
+ errorHandler: AppErrorHandler,
14
+ interceptors: [AuthorizationHeaderInterceptor, RefreshTokenInterceptor, ResponseInterceptor],
15
+ });