Code Monkey home page Code Monkey logo

baya-weaver's Introduction

Baya-Weaver

Online Website Builder

Back Story

Inspired by the engineering that is Wix.com and Wordpress, I ought to understand how something as complex as a Website builder is built. A website that makes a website lol.

So I started off searching on Youtube and Stackoverflow, which was not as successful as I thought it would be. I eventually came across an answer by Sunday Ironfoot on StackOverflow, which he says

"You've effectively been given the task of writing a full blown Content Management System. This is a mammoth task that would probably take a lone developer anything from 6 - 24 months to build depending on experience (this based on development time of other CMS' on the market). For instance, the developers of Umbraco (an Open source ASP.NET CMS) are busy porting their CMS over to ASP.NET MVC, work started around beginning of this year and is not expected to be built until middle of next year, and they're some of the most talented devs in the industry."

At this point I became more serious about building a website builder, and I had to do it over the weekend beccause I was still working on Cloud Winterstore which was unfinish. An answer above Sunday Ironfoot by Morfildur stated

"A simple solution would be to have several base-templates with placeholders that get filled with content/other templates later. Then you provide the users with a simple way to define page headers and page_contents, i.e. the first might just be a textbox, the content is filled by using something like TinyMCE. If necessary, the clients can use other placeholders in the content, but that might not be neccessary.After that you just add an auto-generated menu, create the logic that replaces the placeholders with the user-entered content (something along the lines of template.Content = template.Content.Replace("{page_content}", customer.Pages['foo'].GetTemplateContent("page_content")); )and maybe add a CSS stylesheet with color and font settings provided by the customers. The most complex part is the backend and user-authentification. This solution is simple to implement and has no real flexibility at all but it allows customers to quickly write a few texts and add some fancy images without having to care about anything else. To persist color settings, write them into the database and create a new CSS stylesheet everytime they are changed. For other content just use a Database table "content" with the columns "key" and "value" and you might want to generate static HTML pages on every change."

With Morfildur answer I was able to craft up a model of a website builder that is able to

(1) Edit DOM Elements

(2) Support multiple users

(3) Allow preview of the page

(4) Allow loading of prebuilt templates

(5) Automatic saving of changes

Preview

deploy.mp4
font_color.mp4
rescale.mp4
resize_recolor.mp4
content_management.mp4

About

Baya Weaver is a model of an online website builder, that support the following functions (1) Edit DOM Elements (2) Support multiple users (3) Allow preview of the page (4) Allow loading of prebuilt templates (5) Automatic saving of changes

It is built around python's django framework, Vanilla JS, CSS3 and HTML.

References

Morfildur and Sunday Ironfoot's answers

https://stackoverflow.com/questions/3059592/creating-a-website-builder-how-would-i-architect-it

baya-weaver's People

Contributors

rbryanben avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.