Roadmap
Year 2024
Welcome to the Qore roadmap of 2024.
The goal this year is to have a new front-end with the following specifications:
- Vue 3
- Composition API
- TypeScript
- Vite
- Tailwind CSS
- PrimeVue component library
- Pinia store
- Qore front-end as NPM package
Below are described the different phases of the project. The project is divided into 7 phases, each phase will be reviewed internally before moving on to the next phase.
The goal is to have a working version after phase 5.
Phase 1
- Create a new Skeleton front-end with Vite, Vue 3, and TypeScript
- Create Typescript Qore-front-end NPM package and include it in Skeleton as a Vue plugin
- Add Pinia state management (auth, layout, api etc.)
- Create authorization and authentication pages (Login, Forgot Password, Reset Password)
- Add error handling and 500
dd
dialog - Include PrimeVue and create app layout
- Add main menu
- Support material icons
- Add Theme Switcher (with dark mode support)
- Add MVP BaseForm (bare minimum)
- Conversion JSON to FormData
- Debouncing, field data, field meta
- Field actions
- Field state transferring
- Field labels, tooltips, hints
- Field disabled / readonly
- Add MVP resource pages (bare minimum)
- Add MVP for resources (bare minimum):
- UserResource
- MailTemplateResource
- Tenant Resource
- Twig templates
- Add MVP for fields (bare minimum):
- (Skeleton) AvatarName
- (Skeleton) CheckedPassword
- (Skeleton) TenantRoles
- (Mailing) InternalSourceSelect
- (Mailing) MailReceivers
- Relational
- BelongsTo
- BelongsToMany
- Text
- CheckBox
- Select
- Choice
- Code
- FilePicker
- Id
- TemplatePreview
- Text
- Textarea
- Add support for using fields outside BaseForm
- Add helper methods for preferences and settings
- Add support for extending Qore Pinia stores within Skeleton
- Create MVP how-to documentation (for developers)
- Create MVP guidelines documentation (for developers)
- ** Internal review **
Phase 2
- BaseDialog component
- Confirmation popup support
- Profile page
- Auth preferences
- Tenant preferences
- Add roles & permissions page(s)
- Add tenant variable page(s)
- Add serial number page(s)
- Add mailing page(s)
- Add authentication settings page
- Add permissions checking for resource pages
- Forms in dialogs (BaseDialogForm) with static buttons
- Add MVP for BaseTable
- Filtering
- Sorting
- Pagination
- Add MVP for resources (bare minimum):
- Mail footers
- Countries
- Add resource meta data (icons, title, description)
- Add Resource Detail
- Tabs
- Cards
- Actions
- Events & Listeners (refresh page or element)
- Logs
- Add roaming media support
- Session management
- 2FA
- Add router middleware (2FA, confirmed etc.)
- Add MVP for fields (bare minimum):
- Relational
- HasOne
- HasMany
- HasOneThrough
- HasManyThrough
- MorphOne
- MorphMany
- MorphTo
- MorphToMany
- BelongsToUser
- BelongsToManyUsers
- Color
- CreatedAt
- UpdatedAt
- Date
- DateTime
- Image
- Number
- PreferenceSelect
- Price
- SettingSelect
- Wysiwyg (CKEditor with variables, images)
- TwigTemplate
- VariableValue
- Relational
- Phase 1 Review issues
- Use typehinting in
defineEmits
- Use generics in Field modelValue (in
useField
) - Logical imports (e.g.
import { useField } from 'qore/helpers'
) - Proper PHPStorm support (if available)
- “Unplugin" instead of global PrimeVue components
- Use SelectField in every component that has a dropdown
- Options for Select field should be in a separate helper file (instead of field.ts)
- Make Qore front-end available as a package in Gitlab
- Use typehinting in
- ** Internal review **
Phase 3
- Page breadcrumbs
- Page fixed header (with title, slots etc.)
- Preferences & Settings
- Apply language preference
- Apply favicon preference & additional preferences
- Add global CSS
- BaseForm
- Interceptions
- Sticky
- Add Field Layouts
- Columns
- Tabs
- Steps
- Cards
- Columns with cards
- BaseTable
- Default sort column
- History & State
- Actions
- Export
- Row styling
- Column styling
- Resource Index tabs
- Field display
- Tooltips
- Columns widths, visibility
- Inline Edit
- Add multi-tenancy support (switching tenants)
- Alerts on resource pages
- Add MVP for fields (bare minimum):
- Action button
- Button
- DetailButton
- Duration
- EncryptedText
- Heading
- Month
- Paragraph
- Phone
- Place
- Separator
- SimpleEditor
- Status
- Time
- Website
- Relation fields
- Scoping (query)
- Field dependency
- Links / Buttons
- As Tab / as Table
- Attaching / Detaching
- Relational BaseForm
- Relational BaseTable
- Relational Table actions
- Replaceable components (e.g. index) for KanBan etc.
- Host the application somewhere for testing purposes
- ** Internal review **
Phase 4
- Global search
- Scope groups in Roles & Permissions
- Background processes (downloads)
- Active downloads in TopBar (exported downloads)
- Downloads table page
- API Tokens page
- BaseTable finishing up
- Inline editing
- Context menu
- Row click action
- Sticky columns
- Column resizing
- Column dragging
- Totals (summary)
- Table Settings
- Table Column selection
- Table Filters
- Responsiveness
- BaseTable
- Roles & Permissions (table)
- Resource Detail finishing up
- Chips
- Block buttons
- Sidebar
- BaseForm (Resource)
- Duplicating
- Create "another one"
- Readonly & Disabled for fields should block UI (via FieldWrapper)
- Finish / clean up fields, and add fields:
- Rating
- RelatedToMany
- RelationTable
- Repeater
- SerialNumber
- VatNumber
- Resource actions
- Metadata support (focus, width, redirect, etc.)
- File downloads
- Impersonation
- Add tab navigation support with router
- Add better search support on select fields (also search on description)
- Add "intended" url support for logging in (2fa, password confirm etc.)
- Add theming (colors) based on preferences (https://primevue.org/theming/)
- (Optional) switch from PrimeVue styled to unstyled Tailwind PrimeVue
- i18n for PrimeVue messages
- ** Internal review **
Phase 5
- Add modules & plugin support (Vue plugins)
- Add modules & plugin page(s)
- Add Fields
- CompanyName
- Country
- Currency Select
- Add Extensions
- qore/address
- Addresses field
- PhoneNumbers field
- EmailAddresses field
- qore/crm
- qore/mailing-extended
- qore/notes
- qore/geocoding
- qore/postcode
- qore/kvk
- qore/microsoft-graph
- qore/address
- Declare module
- ** Internal review **
- Make production ready (add first tag)
Phase 6
- Add favicon support (icons)
- Add Extensions
- qore/layout
- qore/attribute
- qore/employee
- qore/invoicing
- qore/kanban
- qore/products
- qore/subscriptions
- qore/templates-extended
- qore/login-branding
- qore/okta
- qore/sso
- qore/brandfetch
- qore/adversus
- qore/mailgun
- qore/messagebird
- qore/quickbooks
- qore/wefact
Phase 7
- Add Extensions
- qore/excel-import
- qore/forms
- qore/tickets
- qore/signature