Files
raven-client/ayanova/devdocs/todo.txt
2020-11-30 17:24:26 +00:00

977 lines
36 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@ ROADMAP STAGE 6 - "REALITY" All in on porting over all the real objects from v7
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
MISC ITEMS THAT CAME UP
todo: DATE / TIME / DATE_TIME controls switch back to vuetify ones
Look into code, the non native originals are outdated in the methods they use (watchers)
make copies of them for backup then morph them into the same type of code as the native ones use
as that is the most current performant reliable way to do it.
Ensure can clear completely to null value
Test it out thoroughly there was a reason I quit using it the first time
i18n
smoke test (maybe some way to bypass the control for test purposes)
Is it possible to still keep the native ones in there somehow with a v-if template and a setting?
maybe get the nonnative one working then look into supporting this for edge cases or future proofing
Lots of warnings about using native ones on the MDN site, looks like I should use a component of some kind
so if I do I might as well use the vuetify ones since there are no substantially greater options out there
It would be very nice though if I could opt to have the user be able to choose alternatives like a native input for when
browser makers actually get around to implementing them properly, some have and some are good but some like apple just don't work
bugbug datetime control clear buttons don't trigger emit of empty date times
contractexpires on customer form clearing it and saving sends date to server as if it wasn't cleared at all
Better solution: one clear button that clears all and emits properly and disable the built in if possible
todo: datetime testing make sure locale, am/pm etc are all honoured
test READ ONLY as well
todo: gz-data-table make sure unbounded notes column is bounded by some length restriction
mobile format is ok, it cuts off at one line, but for desktop we should have a sane limit as right now it's completely unbounded
this should apply to any column that displays text but particularly just the plain text ones
todo: picklist empty null vs zero
test with customer and headofficeid
should have the empty selection pre-selected or maybe I need to do away with that since the clear button does the same thing?
todo: missing feature, can't filter widgetlist by User due to no UserList being available
Is this meant to be text only filter and we have no id filter system?
How hard to add proper list selection and ID because it seems important?
fucking grids are always fucking fucked due to the filter and sort fucking shit
todo: picklist clear doesn't trigger dirty change
maybe doesn't emit?
todo: Uifielddatatype Phone and TimeSpan support at client, translation keys etc
ay-customize.vue
gz-data-table.vue
ay-data-list-view.vue
todo: search form weirdness
ICONS
search for "abc" in imported data get a user result then the other results below do not have logos
i.e. workorder headoffice, project
needs all icons to show properly
## HERE: icon: window.$gz.util.iconForType(item.id),
TYPE NAMES
results for some type names show as "type 59" for example instead of "Customer note"
todo: notification queue? Is there a need for a form where can see all queued notifications and delete them or something in case of issues?
or maybe just a single clear it all out button?
todo: TEST ON SERVER CUSTOMER STUFF
............................................................
CURRENTLY WORKING ON: above and then testing once posted
todo: TESTING After customer form is made
Test with devices
ensure that a PHONE "tel" field can be triggered to make a phone call
ensure EMAIL field can trigger email client
if necessary add buttons to trigger that happening via javascript
ensure that a MAP url opens correctly from the customer form
Specifically test apple maps on the iPad because on other devices it redirects to google!?
Test maps seperately for address and coordinates versions
Test setting coords from phone
Test the customer form as read only user
make sure can't use action menu for address etc
check contacts
check contactnotes
NEXT UP: misc items above before next object because of the 'implication'
EACH OBJECT DEV CYCLE:
FIRST
Check cases, make sure not changing the object fundamentally, many v7 objects are going to change for cases (particularly inventory related)
BACK
AyaType and associated code
Model and Database table(s) and associated code
Biz object and all supported interfaces (searchable, exportable etc)
Business rules port from v7 and new ones
Translation keys
AyaFormFieldDefinitions for object if it's got a customizable form
DataList if applicable
be minimal with the default fields, many people will not change them so if too much in default will be excessive bandwidth hog for no reason
Notification code if applicable
Routes and associated code
Seeder generate samples
FRONT
AyaType / rights
front route
List form
Edit form
Add to smoke test
DOCS (at back but with front links, maybe not fleshed out just placeholder ok for now)
IMPORT
imports and flows through to new front end viewable and searchable and printable etc
REPORTING
Reportable
DASHBOARD
Add widget if dashboardable https://docs.google.com/document/d/1cEesyryhM0zYkH0PEswiuOezUTA_Nv5Xn3jfBczdQmk/edit
## OBJECT ORDER
Preliminary order to get the ball rolling, these are the easiest starting point:
Customer "Client"
Drop last service date column: case 3536
Import contacts as User's from v7, drop contact related fields: case 3356
Several UI related cases in rockfish for new Custom form, create user on fly and email creds, customer notes etc
HeadOffice
Vendor
case 3300 popup notes
case 3427 change vendortype to displayfor so it displays in multiple locations
adm-user edit form must be tweaked once the vendor object is coded to so subcontractors
adm-users list form to include vendor name for subcontractors
CustomerNote "ClientNote"
Memo (user memos)
Project
Note: needs UI location as well, under Customers is still likely the best, however it might be a role related issue as well
maybe a service tech needs to see projects but can't see customers? (or maybe goes in both locations?, though it's really just service oriented anyway)
Reminder "ScheduleMarker"
Rate
ServiceBank
(note, see cases, has changed, affects client, ho, unit)
TaxCode (really don't see any changes, but surely there would be?? Think this one over)
Unit
see cases 3536,
UnitModel
see case 1706, other case drop description field
User
Fixup once have vendor, ho, client etc as it depends on those
WorkorderStatus
no dependencies, possibly many cases, read over carefully before implementing
# V7 objects now TAGS, the following objects are imported as tags and suffixed with a period and then short versions of the object type in the tag name
- Region
- UnitModelCategory
- UnitServiceType
- WorkorderItemType
- ClientGroup
- WorkorderCategory
- PartCategory
- DispatchZone
- ScheduleableUserGroup
- ClientNoteType
## v7 DB DEPENDENCIES
object
depends on
AssignedDoc * Already handled automatically by v8 migrate
none
xaclient
adispatchzone - TAG
aheadoffice
aworkorder
xaclientgroup - TAG
none
xaclientnote
aclientnotetype - TAG
aclient
xaclientnotetype - TAG
none
DEPRECATED - aclientnotifyevent -
none
aclientservicerequest
aworkorderitem
DEPRECATED - acontact -
acontacttitle
acontract
aregion - TAG
acontractrate
acontract
arate
adispatchzone - TAG
aregion - TAG
DEPRECATED / HANDLED AUTOMATICALLY BY IMPORT afile
none
xaglobal
ataxcode
aworkorder
aworkorderstatus
xaglobalex
none
xaheadoffice
aclientgroup - tag
acontract
aintegration
none
aintegrationmap
aintegration
aloanitem
aregion - TAG
aworkorderitemloan
xamemo
auser
DEPRECATED - anotify*
lots of tables, but it's all obsolete and won't be ported
HANDLED BY IMPORT - aobjectcustomfield
(defines custom fields, is part of base import already, nothing special required here)
apart
apartassembly
apartcategory - TAG
aunitofmeasure
avendor
apartassembly
none
apartbywarehouseinventory
apart
apartwarehouse
apartcategory - TAG
none
apartinventoryadjustment
none
apartinventoryadjustmentitem
apart
apartinventoryadjustment
apartwarehouse
apartserial
apartinventoryadjustmentitem
apurchaseorderreceiptitem
aworkorderitempart
apartwarehouse
aregion - TAG
apriority
none
aproject
aregion - TAG
auser
apurchaseorder
aproject
avendor
apurchaseorderitem
apart
apartwarehouse
apurchaseorder
ataxcode
aworkorderitempartrequest
apurchaseorderreceipt
avendor
apurchaseorderreceiptitem
apart
apurchaseorder
apurchaseorderitem
apurchaseorderreceipt
arate
aclientgroup - tag
arateunitchargedescription - DEPRECATED per case 3432
aregion - TAG
DEPRECATED case 3432 - arateunitchargedescription
none
aregion - TAG
aworkorderstatus ?! WTF?
aregionnotifystat ?wtf is this?
aregion - TAG
REPLACED NEW FORMAT - areport
aregion - TAG
aScheduleableUserGroup - TAG
none
ascheduleableusergroupuser
aScheduleableUserGroup - TAG
auser
aschedulemarker (now "Reminder")
none ?must be at least user in there...weird
DEPRECATED - asecuritygroup (nope)
none
xaservicebank
none
atask
none
ataskgroup
none
ataskgrouptask
atask
ataskgroup
xataxcode
none
aui* (these are all v7 UI saved settings that are not applicable to v8)
xaunit
aclient
aunitmodel
aunitmeterreading
aworkorderitem
xaunitmodel
aunitmodelcategory - TAG
avendor
xaunitmodelcategory - TAG
none
DEPRECATED NO MORE - aunitofmeasure
none
xaunitservicetype - TAG
none
xauser
adispatchzone - TAG
aheadoffice
apartwarehouse
asecuritygroup
avendor
aworkorder
xausercertifcation* (these are now tags and already rolled into v8 migrate tool)
xausermru DEPRECATED
xauserright DEPRECATED
xauserskill* (now tags and already accounted for in v8 migrate)
xavendor
none
xawikipage* (already accounted for in v8 migrate code, object by object will export)
aworkorder (new structure, some of these are no longer joined due to seperation of wo types in v8)
aproject
aregion - TAG
aworkordercategory - TAG
aworkorderpreventivemaintenance
aworkorderquote
xaworkordercategory - TAG
none
aworkorderitem
apriority
aunit
aunitservicetype - TAG
aworkorderitemtype - TAG
aworkorderstatus
aworkorderitemlabor
arate
aservicebank
ataxcode
aworkorderitem
aworkorderitemloan
aloanitem
ataxcode
aworkorderitem
aworkorderitemmiscexpense
ataxcode
aworkorderitem
aworkorderitemoutsideservice
avendor
aworkorderitem
aworkorderitempart
apart
apartserial
apartwarehouse
ataxcode
aworkorderitem
aworkorderitempartrequest
apart
apartwarehouse
apurchaseorderitem
aworkorderitem
aworkorderitemscheduleduser
arate
aworkorderitem
aworkorderitemtask
atask
ataskgroup
aworkorderitem
aworkorderitemtravel
arate
aservicebank
ataxcode
aworkorderitem
xaworkorderitemtype - TAG
none
aworkorderpreventivemaintenance
aworkorder
aworkorderstatus
aworkorderquote
aworkorder
aworkorderservice
aworkorderpreventivemaintenance
aworkorderstatus
xaworkorderstatus
none
//---------------------------------------------------------------------------------------------
NoType = 0,
Global = 1,
[CoreBizObject]
Widget = 2,
[CoreBizObject]
User = 3,
ServerState = 4,
License = 5,
LogFile = 6,
PickListTemplate = 7,
[CoreBizObject]
Customer = 8,
ServerJob = 9,
[CoreBizObject]
Contract = 10,
TrialSeeder = 11,
ServerMetrics = 12,
Translation = 13,
UserOptions = 14,
[CoreBizObject]
HeadOffice = 15,
[CoreBizObject]
LoanUnit = 16,
FileAttachment = 17,
DataListView = 18,
FormCustom = 19,
[CoreBizObject]
Part = 20,
[CoreBizObject]
PM = 21,
[CoreBizObject]
PMItem = 22,
[CoreBizObject]
PMTemplate = 23,
[CoreBizObject]
PMTemplateItem = 24,
[CoreBizObject]
Project = 25,
[CoreBizObject]
PurchaseOrder = 26,
[CoreBizObject]
Quote = 27,
[CoreBizObject]
QuoteItem = 28,
[CoreBizObject]
QuoteTemplate = 29,
[CoreBizObject]
QuoteTemplateItem = 30,
[CoreBizObject]
Unit = 31,
[CoreBizObject]
UnitModel = 32,
[CoreBizObject]
Vendor = 33,
//--- WorkOrder
[CoreBizObject]
WorkOrder = 34,
[CoreBizObject]
WorkOrderItem = 35,
[CoreBizObject]
WorkOrderItemExpense = 36,
[CoreBizObject]
WorkOrderItemLabor = 37,
[CoreBizObject]
WorkOrderItemLoan = 38,
[CoreBizObject]
WorkOrderItemPart = 39,
[CoreBizObject]
WorkOrderItemPartRequest = 40,
[CoreBizObject]
WorkOrderItemScheduledUser = 41,
[CoreBizObject]
WorkOrderItemTask = 42,
[CoreBizObject]
WorkOrderItemTravel = 43,
[CoreBizObject]
WorkOrderItemUnit = 44,
//---
[CoreBizObject]
WorkOrderTemplate = 45,
[CoreBizObject]
WorkOrderTemplateItem = 46,
GlobalOps = 47,
BizMetrics = 48,
Backup = 49,
Notification = 50,
NotifySubscription = 51,
Reminder = 52,
UnitMeterReading = 53,
CustomerServiceRequest = 54,
ServiceBank = 55,
OpsNotificationSettings = 56,
Report = 57,
DashboardView=58
[Description("LT:O.Nothing")] Nothing = 0,
[Description("LT:O.Global")] Global = 1,
[Description("LT:O.Region")] Region = 2,
[Description("LT:O.Client")] Client = 3,
[Description("LT:O.Vendor")] Vendor = 4,
[Description("LT:O.HeadOffice")] HeadOffice = 5,
[Description("LT:O.RentalUnit")] RentalUnit = 6,
[Description("LT:O.Unit")] Unit = 7,
[Description("LT:O.UnitModel")] UnitModel = 8,
[Description("LT:O.Workorder")] Workorder = 9,
[Description("LT:O.WorkorderItem")] WorkorderItem = 10,
[Description("LT:O.UserSkillAssigned")] UserSkillAssigned = 11,
[Description("LT:O.UserCertificationAssigned")] UserCertificationAssigned = 12,
[Description("LT:O.User")] User = 13,
[Description("LT:O.Part")] Part = 14,
[Description("LT:O.LoanItem")] LoanItem = 15,
[Description("LT:O.DispatchZone")] DispatchZone = 16,
[Description("LT:O.Rate")] Rate = 17,
[Description("LT:O.Contract")] Contract = 18,
[Description("LT:O.Project")] Project = 19,
[Description("LT:O.PurchaseOrder")] PurchaseOrder = 20,
[Description("LT:O.ClientGroup")] ClientGroup = 21,
[Description("LT:O.WorkorderCategory")] WorkorderCategory = 22,
[Description("LT:O.WorkorderItemScheduledUser")] WorkorderItemScheduledUser = 23,
[Description("LT:O.WorkorderItemOutsideService")] WorkorderItemOutsideService = 24,
[Description("LT:O.WorkorderItemPart")] WorkorderItemPart = 25,
[Description("LT:O.WorkorderItemLabor")] WorkorderItemLabor = 26,
[Description("LT:O.WorkorderItemTravel")] WorkorderItemTravel = 27,
[Description("LT:O.WorkorderItemMiscExpense")] WorkorderItemMiscExpense = 28,
[Description("LT:O.WorkorderItemPartRequest")] WorkorderItemPartRequest = 29,
[Description("LT:O.WorkorderItemLoan")] WorkorderItemLoan = 30,
[Description("LT:O.ClientNote")] ClientNote = 31,
[Description("LT:O.ServiceBank")] ServiceBank = 32,
[Description("LT:O.WorkorderQuote")] WorkorderQuote = 33,
[Description("LT:O.WorkorderService")] WorkorderService = 34,
[Description("LT:O.AssignedDoc")] AssignedDocument = 35,
[Description("LT:O.PartWarehouse")] PartWarehouse = 36,
[Description("LT:O.UnitMeterReading")] UnitMeterReading = 37,
[Description("LT:O.UnitModelCategory")] UnitModelCategory = 38,
[Description("LT:O.Locale")] Locale = 39,
[Description("LT:O.SearchResult")] SearchResult = 40,
[Description("LT:O.WorkorderItemType")] WorkorderItemType = 41,
[Description("LT:O.UnitServiceType")] UnitServiceType = 42,
[Description("LT:O.PartAssembly")] PartAssembly = 43,
[Description("LT:O.AyaFile")] AyaFile = 44,//case 73
[Description("LT:O.Contact")] Contact = 45,
[Description("LT:O.ContactPhone")] ContactPhone = 46,
[Description("LT:O.WorkorderPreventiveMaintenance")] WorkorderPreventiveMaintenance = 47,
[Description("LT:O.TaskGroup")] TaskGroup = 48,
[Description("LT:O.ScheduleMarker")] ScheduleMarker = 49,
[Description("LT:O.ClientServiceRequest")] ClientServiceRequest = 50,
[Description("LT:O.ScheduleableUserGroup")] ScheduleableUserGroup = 51,
[Description("LT:O.Task")] Task = 52,
[Description("LT:O.Memo")] Memo = 53,
[Description("LT:O.PartCategory")] PartCategory=54,
[Description("LT:O.UnitOfMeasure")] UnitOfMeasure=55,
[Description("LT:O.TaxCode")] TaxCode=56,
[Description("LT:O.PartSerial")] PartSerial = 57,
[Description("LT:O.PartInventoryAdjustment")] PartInventoryAdjustment = 58,
[Description("LT:O.PartInventoryAdjustmentItem")] PartInventoryAdjustmentItem = 59,
[Description("LT:O.Priority")] Priority=60,
[Description("LT:O.UserSkill")] UserSkill=61,
[Description("LT:O.WorkorderStatus")] WorkorderStatus=62,
[Description("LT:O.UserCertification")] UserCertification=63,
[Description("LT:O.ClientNoteType")] ClientNoteType=64,
[Description("LT:O.SecurityGroup")] SecurityGroup=65,
[Description("LT:O.PurchaseOrderReceiptItem")] PurchaseOrderReceiptItem=66,
[Description("LT:O.PartByWarehouseInventory")] PartByWarehouseInventory=67,
[Description("LT:O.Report")] Report=68,
[Description("LT:O.WorkorderQuoteTemplate")]
WorkorderQuoteTemplate = 69,
[Description("LT:O.WorkorderServiceTemplate")]
WorkorderServiceTemplate = 70,
[Description("LT:O.WorkorderPreventiveMaintenanceTemplate")]
WorkorderPreventiveMaintenanceTemplate = 71,
[Description("LT:O.WikiPage")]//case 73
WikiPage = 72,
[Description("LT:O.GridFilter")]//case 941
GridFilter = 73,
[Description("LT:O.NotifySubscription")]//case 941
NotifySubscription = 74,
[Description("LT:O.PurchaseOrderReceipt")]//case 941
PurchaseOrderReceipt = 75,
[Description("LT:O.Notification")]//case 1172
Notification = 76,
[Description("LT:UI.Go.Schedule")]//case 812
Schedule = 77,
[Description("LT:O.WorkorderItemTask")]//case 1317
WorkorderItemTask = 78,
[Description("LT:O.WorkorderItemUnit")]//case 1317
WorkorderItemUnit = 79,
[Description("LT:ScheduleMarker.Label.FollowUp")]//case 1975
FollowUp = 80
------------------------------------------------------------------------------------------
POST "REALITY" OR IN PARALLEL "REALITY" related items:
TODO: //MIGRATE_OUTSTANDING comment tag
search for this comment tag as it will contain items that could not be done until other items were migrated first
The tag will contain the description for each
todo: Schedule form
- This one is big but requires the data to be there so as soon as implement enough things that are scheduleable then do this
- printing / reporting schedule? Do-able?
todo: can beta test at this point
See below, specific ideas about public beta test (User accounts not seperate installs maybe)
post installer, enlist trial users get feedback, don't get too down when they shit all over it as they will undoubtedly :)
remember, it's for the new customers primarily, new customers = new $$
todo: Document in user manual all form controls with instruction on how to use the various controls etc
- "Anatomy of a AyaNova Form"
WORKORDER UI
todo: Investigate Workorder structure and datagrid see case https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3768
Likely that workorder grids inside will not be full blown custom datagrid I wrote but just a vanilla v-data-table control since there is likely no need for the full customization shit
todo: workorder UI layout stuff (TTM!! Don't re-invent the wheel!)
There's been a lot of ideas about wo floating around and considered, but at the end of the day what I have works so maybe try to meld
into what I have the new concepts and see what comes out. Support a rich wo UI on big screens and scroll around UI on phone maybe.
some notes:
Workorder UI good ideas here: https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3475
Basically (based on RI) it boils down to don't make the user go up to the workorder item level when they can go sideways directly to an alternate child of woitem
i.e. going from parts to labor shouldn't require going up a level
All workorder in one document and just really really tall? (people bitch about RI requiring too many navigation steps to get to shit)
Header and items in one document then bottom in seperate pages?
Is it going to be far easier to code this bitch if I have all the workorder data at hand or..?
How does WBI handle all this because it's kind of the poster child for RAVEN
Workorder is one of those things that may require different views for phone and tablet and laptop etc
Kind of like two views, tiny phone and anything larger
On a PC people will want and expect it to look as much like v7 workorder as possible, maybe that's still a valid layout
just tweaked to work better as a web app a bit but theoretically I could almost duplicate that layout with the tools I have
Consider UI in this as well, will need to decide at least what is visible when
Workorder UI good ideas here: https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3475
How to add items, like new woitem?
send to server get back new object?
lots of biz rules and stuff need to happen, want to minimize load at client
but lots of data back and forth is not ideal
maybe request a woitem and get it back?
what exactly needs to be processed in the wo when items are added / removed?
math / totalling?
simple calcs sb client doable
this will drive what has to happen.
Need to go over all wo features and factor them into this decision properly
The whole idea of a completed section of a wo and stuff, is that dropped due to TTM or still viable?
maybe can pick out the best new features of that which can be integrated into existing design rather than re-inventing the wheel
Here is an overview: https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3412
How best to be able to service LoanUnits on a workorder?
Just make them Units with extra properties exposed if type of loaner?
This seems simplest, but what will it effect?
Hard to make them serviceable if they are an alternate table of source for what's being repaired as that breaks a lot of other code or adds exceptions
Customer is then who exactly because it's fundamental to a lot of wo functionality?
from a biz perspective isn't it like you are your own customer when you service your own equipment that you loan out?
Does Serial field need to be numeric, could it be text instead?
prompted by case 3428 saying that it's hard to deal with constant conversion to text for UI etc
plus, I'm thinking it opens door to textual scheme like appending -A or whatever to a wo.
or, is that a display issue?
Calling something "serial" implies it's unique but it isn't, maybe I should call it "number" instead or "ID" or something?
INFO: did a test workorder with ALL fields filled out heavily and one woitem, exported from db entire graph based on detailed report so every line was every item repeated
still only 84kb and it's a lot bigger than any typical wo in v8 would be as it will be far more efficient without having to repeat lines flatly
so I think size of object is a non-issue really from a practical standpoint.
UI
idea: UI reflects tentativeness state of object:
The UI doesn't imply something is done by changing it fully until the save is completed.
This serves two purposes:
1) user knows at a glance what isn't saved yet and will know it's waiting for save clearly, hopefully leading them to save more often,
2) client doesn't need to track invisible shit behind the scenes, can more easily do patch updates right off UI source
e.g.:
if deleted a row in parts, that row doesn't disappear but rather shows crossed out, maybe grayed out but still there until save to indicate it's tentative status
if added a row, shows green or something or bold or asterisk, (can style with css based on state) until saved
problems:
how to handle regular fields that are changed (that's a lot of field data to track for changes)?
Maybe client keeps a virgin copy of the original wo for comparison
periodically does a compare and flags differences on updates?
(this would also help to serve as an Undo maybe?)
todo: Documentation POST "REALITY"
will already have placeholders from above
Need to think this through carefully
Need to get the critical bits in for onboarding and importing so people can get going
Most important stuff is anything non-obvious
Seems pointless to have one doc per form that just says "The name field is the name and must be unique"
maybe have that kind of stuff in the form basics and then have a doc per OBJECT instead with anything unique or interesting about the object
(and each object form has a link to formbasics so can link to the object form from UI and they get both)
Parts of it can be done post-release for sure
todo: ONGOING search for memory leaks
The 7 times system seems to work the best
Excercise item a few times to settle it in memory, take heap snapshot, force gc, take total of 3 heap snapshots forcing gc each times
Excercise item 7 times exactly, take 3 more heap snapshots forcing gc before each one
Compare snapshot 6 to snapshot 3 look for Delta 7 times items to find leak
https://developers.google.com/web/tools/chrome-devtools/memory-problems
https://nolanlawson.com/2020/02/19/fixing-memory-leaks-in-web-applications/
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@ ROADMAP STAGE 7 - EXTENSIONS (was plugins)
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Step 1: get the current active license count for all extensions so we know what we're dealing with here
Step 2: which extensions in which order and some can be left off entirely?
Plan the order of criticality for extensions
ACCOUNTING is obviously the first and foremost one and MUST be there for a lot of people to take up
MUST be done in a way to support other alternative accounting apps that are coming around now like freshbooks or whatever it's called that Joyce is using now
probably going to need a "trick" of some kind to interface with desktop accounting
i.e. a local windows app that uses the api and just copy over the qbi code
or a local server that has it's own web interface
or regular raven UI but the accounting section interfaces with a local server for local desktop qbi stuff and
the raven server interfaces with QBOnline for the QBOI stuff
based on sales, how many subscribed now
which ones are porting and which are not
Implement in order or priority
Fuck peachtree?
probably not, need to check again our install count of extensions
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@ ROADMAP STAGE 8 - ONLINE EVALUATION ABILITY / INSTALLER, LICENSING, ROCKFISH SUPPORT FOR RAVEN
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
todo: setup for automated trial testing ability so can just link users
Maybe, rather than having seperate servers for testing, have it instead generate a User account on the fly for each user who wants to trial
Automatically re-create the data on a cycle of some kind
Needs warning message about being a shared instance of AyaNova so be careful what you type and also you may see things other people typed that we have no control over
todo: WINDOWS INSTALLER
Runner harness wrapper thing?
even if windows only
it could modify config since it's outside the server
check for Postgres server extant and if not automatically start the standalone postgres instance
manage postgres start and stop and configuration changes, sit in tray, run AyaNova server from there?
easy way to select command line params without resorting to editing text files for end user
initially it's an installation option, but then need to edit after the fact
Quick check of installers available still and is it still kosher to keep using INNO setup or is something better, more supported by windows etc?
Wix if want MSI (some say that's desireable)
INNO is still relevant
I don't need hardly any requirements that can't just be copy or unzip deployed so maybe don't even need an installer for now?
(zip distribution is going to be problematic with Windows file protection shit)
https://docs.microsoft.com/en-us/dotnet/core/deploying/
https://docs.microsoft.com/en-us/dotnet/core/rid-catalog
Completely packaged and installable. REady for users to install as a test as I iterate stage 7 below
All the stuff needed for someone to run it as a test without the real objects yet.
Some kind of expiring license so they can't just keep using it as fucked as it may be some might do that
I want short targetted testing only, not someone downloading and trying it out a month later, that's useless for us
This needs to be focused on what I need to get from people about testing
todo: LINUX INSTALLER
Linux users don't mind doing the manual config thing as much, they're used to it and it could just be a shell file anyway
So mainly this would be a documentation steps to install type issue
todo: DOCUMENT DOCKER
Present dockerfile maybe for docker installation with FILES folder pre-ready to build / run
Whatever docker needs
Or maybe private registry with docker images on our servers somewhere
todo: rockfish, can't do purchase for raven or view it I think
Test a whole sales process from eval to purchase and make it work
todo: rockfish, upgrade to latest bootstrap, out of date Currently
todo: rockfish, trial license fetched On date not updating? (not showing in UI)
todo: Joyce rockfish notes:
Licensing:
noticed that the field "Fetched on" is NEVER updated.
is it much to be able to see the TIME as well as the DATE, when "Requested" and when "Processed"?
There are drop down selections NEW, APPROVED, REJECTED for the (already generated) listed keys. But can not actually save to a different Status. What is the purpose of the drop down options if can not select?
todo: Discourse bootstrapping install
look over, get ideas make case steal ideas profit FTW$
https://github.com/discourse/discourse/blob/master/docs/INSTALL-cloud.md
//here is their standalone config yml definition for DOCKER
https://github.com/discourse/discourse_docker/blob/master/samples/standalone.yml
todo: back and forward buttons when running without browser controls in application mode?
- wait and see on this one, as it will be likely outside of any particular form so not something to be baked in early necessarily
todo: GUIDED TOUR
- This is an important feature and at least get a basic one in there for starters and initial release
- This is a replacement for the tutorials and videos in v7 a
- Need to add that auto-pilot thingy that allows for guided tours in HTML apps
- Specifically it should at least have an ONBOARDING walk through of how to move around, enter data, get help etc. Not feature specific but usage specfic.
- Later I'll add feature specfic tutorials like how to make a workorder etc
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@ ROADMAP STAGE 9 - RELEASE
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
todo: ARCHIVE ALL DEPENDENCIES
Get all code for all 3rd party libs used for front and back of AyaNova 8
Need to store that in an archive somewhere just in case
Needs to be done with each release so can go back to that if necessary
Going to be big, maybe archived to all storage drives locally and burned to a dvd?
If check into the repo it will be an issue probably but you never know
TODO: CSP Policy that should be enabled at server?
I had to add per this: https://docs.telerik.com/kendo-ui/troubleshoot/content-security-policy#content-security-policy
to my csp because I kept getting errors in client end debug console mentioning csp issues
this seemed to come after I updated the client build process to do a legacy and modern build but I'm not 100% sure about that
Assuming has passed all testing
Plan pricing and sales strategy
What to do with licenses for v7 people
Another payment processor?
support bitcoin if possible as well
DONATE
Send a tip / buy a coffee link to the graphic designer who made the rabbit logo
follow the link from the docs appendix open source acknowledgements page
if we use it in release we should at least send them the small amount they get tipped
Send a tip / donate to teh favicon generator guy
https://realfavicongenerator.net/
I broke it at one point by bringing down the site while it was checking ... oops.
Used it several times and should donate
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@ ROADMAP STAGE 10 - ROCKFISH / HOSTING BACKEND SELF SERVER READINESS
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
DO server allocation, rockfish revamp to drive this part (or maybe it's an alternate app)
https://blog.digitalocean.com/its-all-about-the-bandwidth-why-many-network-intensive-services-select-digitalocean-as-their-cloud/?utm_medium=email&utm_source=do_newsletter&utm_campaign=04292020
https://www.youtube.com/watch?v=zZVoo5AbANI
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@ ROADMAP STAGE 11 - RELEASE SELF SERVE / HOSTING
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Fall of 2020 hopefully
links on website for sign up
marketing can begin in earnest
NOTE: HOSTING cases are all moved to priority 2 and most have "HOSTING" in the title tags
todo: Administration - Account
Down the road will need an Account page for seeing their account status in rental SAAS situation
Nothing to do here, it's an obvious one, just delete this later, it's to percolate in brain a bit
maybe under license
PLAIN TEXT EMAILS / ONBOARDING
https://blog.palabra.io/great-onboarding-plain-text
MARKETING
Analytics alternatives to Google:
https://news.ycombinator.com/item?id=24198329
Also very nice screen shot effect:
https://umami.is/
Created by:
dom96 2 hours ago []
Nice! Question for you, how did you make that nice 3D image on the front page with various screenshots overlaid over each other? :)
reply
mcao 2 hours ago []
It's all done in Photoshop. Just take screenshots, then transform, rotate, distort them to look flat. Then add some drop shadows for a 3d look.
reply