Ophixor is a platform where you can create both static websites and dynamic web applications using visual tools and without writing any code.
The official instance can be reached at ophixor.com.
To clone this repository, you can type the following in Git Bash.
git clone https://github.com/macroing/Ophixor.gitNow you have to configure the environment variables in .env.local or similar.
E_MAIL_FROM=info@example.com
E_MAIL_HOSTNAME=email.example.com
E_MAIL_PASSWORD=Password
E_MAIL_USERNAME=info@example.com
MONGODB_URI=mongodb+srv://<Username>:<Password>@cluster.ucibc.mongodb.net/<DatabaseName>?retryWrites=true&w=majority
NEXTAUTH_SECRET=YourProvidedSecret
NEXTAUTH_URL=http://localhost:3000
NEXT_PUBLIC_PLATFORM_DEMO_WEBSITE_CODE=example
NEXT_PUBLIC_PLATFORM_E_MAIL=info@example.com
NEXT_PUBLIC_PLATFORM_NAME=Ophixor
NEXT_PUBLIC_PLATFORM_URL=https://example.com
NEXT_PUBLIC_PLATFORM_URL_SHORT=example.com
Before you install you need to add your Font Awesome auth token to .npmrc. This project is using Font Awesome Pro icons.
If you are in the root directory of the project, install all dependencies like the following.
npm installTo run the project in development mode, run the following command.
npm run devIf you want to build the project and run in production, run the following commands.
npm run build
npm run startComponent- A configurable building block for UI.Component Template- This is used for creating reusable component configurations.Model- A user-defined schema for model data.Model Data- The user-defined data that are created for a given model.Expression- A function or variable that returns some output value given some optional input values.Action- A procedure that do something with its optional input values.Integration- A set of user-defined endpoints to some external source.Data Source- Controls the data available inside a component and its children.
AlertBadgeButtonCardCheckboxDialogDividerElementFooterFormGridHeadingImageInputLabelLinkListListItemMapMenuBarPageRadioGroupRichTextSectionSelectSideBarSpacerSpinnerSwitchTableTableDataTableHeaderTableRowTextTextArea
absacosacoshaddallandanyasinasinhatanatan2atanhaveragecanvasDeltaTimecanvasFPScanvasFramecanvasHeightcanvasKeyDowncanvasMouseButtoncanvasMouseDowncanvasMouseMovedcanvasMousePressedcanvasMouseReleasedcanvasMouseWheelcanvasMouseXcanvasMouseYcanvasTimecanvasWidthceilclampcoalesceconcatcontainscoscoshcountdateAdddateDiffdatePartdegreesToRadiansdistinctdivideequalsfilterfirstfloorformatDategetByKeygreaterThangreaterThanOrEqualTogroupByhoursToMillisecondshoursToMinuteshoursToSecondsifincludesisDesktopisEmailisLandscapeisMobileisPlatformUserAdminisPlatformUserAuthenticatedisPlatformUserWebsiteOwnerisPortraitisSocketConnectedisSocketDisconnectedisSocketReconnectingisTabletisUserAuthenticatedjoinlastlengthlessThanlessThanOrEqualToliterallookuplowercasemapmaxmillisecondsToHoursmillisecondsToMinutesmillisecondsToSecondsminminutesToHoursminutesToMillisecondsminutesToSecondsmultiplynotnowobjectorPIpathpipelineplatformUserEmailpowpropradiansToDegreesrandomrangereplaceroundsecondsToHourssecondsToMillisecondssecondsToMinutessinsinhsocketDatasocketDataArraysortsplitsqrtstatestringLengthsubstringsubtractsumtantanhtoArraytoBooleantoNumbertoObjecttoStringtrimuppercaseuserEmailuserNameviewportHeightviewportOrientationviewportWidthwebsiteDescriptionwebsiteLanguagewebsiteName
addStateValuecanvasCirclecanvasClearcanvasImagecanvasLinecanvasPolygoncanvasRectanglecanvasRestorecanvasRotatecanvasSavecanvasScalecanvasTextcanvasTranslateforEachifnavigateprintsocketBroadcastsocketConnectsocketDataAddsocketDataClearsocketDataRemovesocketDisconnectsocketEmitsetStateValueupdateComponentuserSignInuserSignOutuserSignUpwait
- It should be possible to specify JSON-LD data for a Website.
- It should be possible to specify JSON-LD data for a WebsitePage.
- It should be possible to specify some JSON schema for Data Model and Data loading for a WebsitePage.
- When the point above works, a few Actions and Expressions are required. These have to do with Data fetching for a specific page.
- A few Actions and Expressions for adding or removing components.
- An Action for Integrations.
- The transformation pipeline for Integrations has not been implemented yet.
- A user of the platform should have support for requesting to change the password.
- A user of a website should have support for requesting to change the password.
- A user of a website should be able to update the profile. So a general Action should support that functionality.
- Someone running a Website should be able to manage their WebsiteUsers.
- The collaborator feature needs to be finished. It is mainly updating existing collaborators left.
- Subscription management needs to be added. This includes being able to subscribe to a plan, canceling the subscription and admin management.
- All components need support for visibility checks.
- Everything should support the Swedish language. Preferably in a way that makes support for other languages easy.
- Data should support expressions for most types. The Workflow Editor should be used to configure it on the Data-part of the Models page.
- Actions for loading one or more WebsiteUsers should be added. Pagination should be supported.
- The slug for a WebsitePage should support Regex so that many pages can refer to the same WebsitePage instance.
- Some Expressions for retrieving the path parts of the slugs should be added.
- A WebsiteUserModel should be added where the developers of the Website can specify custom fields that WebsiteUsers should have. Added on creation.