How to build a programmable website? - language-agnostic

I'm developing pretty normal, non-brilliant Web 2.0 applications, like blogs, forums, social networks, etc.
APIs, mashups, greasemonkey-like works are okay for developers. But for end-users, my websites can't provide something more than a-gazillion-paper magazine. I want my users to create their own program logic to create information, access to data and communicate each other based on their own way.
The most advanced programmability on the websites are all about "Show 20 results per page", moving GUI elements around or changing colors of design.
Is there a study or do you have an idea to make websites allow their users to manipulate/create application logic, data structure, access methods both in client-side and server-side easily?
Thanks!
Please accept my apologizes for poor English, I'm not a native speaker.

Short answer, no. Long answer, not yet but this is probably a long term goal of web development overall. There are some "build your own web apps" web apps around but none of them go much beyond your simple description.
The most useful thing I have come across is something called pyjsglade:
http://sourceforge.net/projects/pyjsglade/
Which lets someone build a web gui in an IDE which then automagically turns into a webpage with full AJAX capabilities. It doesn't do everything you want but it's worth a look certainly.

Related

mobile / web application for confrence text / photo messaging

Imagine a social network application similar to twitter which every user is following and is also followed by some other users and whenever a user sends a message (text or photo) it is displayed instantly on the screen of users following him/her. What is the best way to make such an application for:
mobile
web
I have some web programming experience and the only way I know to do this in web is to send an ajax call every second from a user's client. My feeling tells me there should be a better way. I did some research and found webrtc. Is that the way to go? I (and probably many other users) will be grateful if you can explain the pros and cons of the solution you suggest.
Thanks a lot.
If you want to build conference app/ messaging app for web/mobile platform you can use latest web technologies.
Node.js is an Javascript framework which does efficient and non blocking IO and it works really well with applications which are not data intesive which involve lot of calculations.
Please go through Node.js and libraries associated with it, you can ahieve building efficient chat application.

Advice on Where to Start with My App

I'm a relative beginner using Google Apps Script and JavaScript, but I've been playing around with bot for days now and I've created a few simple programs and I'd really like to try and get started on my dream project, even if it takes me forever. I'd like some advice on what I should use in terms of making the UI and what database I should use to hold the information (and if this app is even possible).
The App
I'd like to create an online novel management app that utilizes Google Drive as it's source for files. The UI would have a tree that showcases all the google drive files in the novel. When a scene is clicked, the scene opens up for editting.
Questions
Is this app a possibility?
If so, in terms of a UI, what do you think I should use? The google
provided UIbuilder? The HTML service - for example, can I have a
frame on the right that the google doc that needs to be editted
can open up in on the right?
Lastly, what database should I use? The database would have to store
chapter names and positions, as well as scene names, positions,
and the google doc ID that the scene corresponds to. I've got a
handle on ScriptDB and Spreadsheets... And if either of these two
aren't the best option, would some other database work better? And
why?
This app will, hopefully, be able to give an overview of a novel in tree form, allow you to open a particular scene and edit it, create new scenes, and also change the order in which the scenes are displayed. And then when the person finishes their novel, the app will compile all the scenes into one novel (also in google Drive).
Any insight or suggestions would be greatly appreciated!
Having a look at the questions you recently posted I think I have a pretty good idea of what you are trying to do and it looks like an exciting project... I can only encourage you to start it as soon as you can even if you're not comfortable with all the tools you will need to use, the best learning method is probably to work on something important to you.
Now your 3 questions : 1 - This is perfectly doable in the GAS environment and shouldn't be too hard to go through.
2 - the GUI builder is an easy way to start with UI but it lacks a number of features and tools that you will be needing (tree for example ) and is not so easy to expand if you ever need to. Depending on your knowledge in html, the choice is mainly between UiApp and html service... I would choose UiApp because I'm not good at all in html (but that's not relevant here ;-) but both are capable of building what you want, are easily expandable and not too hard to debug. The advantage could go to html service if you are going to look for 'nice looking features' because it opens the door to 3rd party tools... but again, this is a matter of personal choice.
3 - A recent post from Mogsdad showed that spreadsheet are faster than scriptDb for data storage and manipulation. I find it also easier since I can have a global view on data in the spreadsheet when debugging. Of course Spreadsheet must be considered as a container and data manipulated at array level to benefit from maximum performance. I use that in a lot of database application with full satisfaction.
Sorry for these "general considerations" that don't comply to sto standards ;-)
Yes, it seems that all of the things you are requesting are not too ridiculous. I recommend sticking to Google services because they are all easily integrated. To start off, you may want to use the UI builder/UI services. There may be a point in this project where you may want some functionality that the UiApp doesn't provide. At that point, you might want to switch over to HtmlService.
My answer is the same for the databases question. You might want to use a spreadsheet for your database so that you will be able to easily edit it by hand if you need to. You may not have the performance that another database would give you, but it will be fairly easy to test and mess around with your spreadsheet "database."
You could start out with getting the basics down. There's a serious amount of data out there. I would suggest you research on an "as-needed" basis. Design some work-/dataflow patterns for your app, for which you could try to use the Fluid UI extension for Chrome. Have a look at this from Mozilla on the designing of apps.
When you've gone through this you might want to have a look at Phonegap and the basics of web development and how you could combine the two.
There's also several ways of using/storing data. You could try WebSQL though it they no longer develop it. You could look at IndexedDB. You could try to use cookies.
Seriously, have a look around. You might also like the books of Wrox. They're very informative and have great work with reading demo's. Though the books are huge ;)

What technologies are used for WYSIWYG layout/design/personalized webpage apps?

I'm trying to figure out the different skills and technologies necessary to develop webpage personalization apps that allow users to input and edit text/images/links on a webpage. About.me and Flavors.me would be the most advanced examples of what I'm talking about. Thanks in advance for any guidance.
#tim, they're database driven apps. The user enters information into a database (or Facebook profile, etc) and it's then pulled back out via a scripting language and presented on the page. The page layout is also stored in a DB and brought together with the user's profile information for what becomes the page layout you see. About.me seems to take it a step further by creating an email account that's tied to the user account.
Technology-wise, just about any back-end language could be used. Facebook is written in PHP, though they have a language-agnostic API that could be talked to from .net, java, php, etc. You'll need a database, and that probably would either be MySQL, Sql Server or Postgres, though there are certainly others. Finally you'd probably want to make use of the API's I spoke about including Facebook, Google, LinkedIn, etc. to aggregate information the user already has entered in different locations.
Examples of this type of site are varied and all over. Mint.com does it for financials. Grooveshark will tie into facebook and others to communicate and share your music collection. Linked in will tie into others as well. Integration is actually a very lucrative segment of the programming business right now. An app that talks to others has good marketable value.

Speeding up web development

Situation
I have been working on a project lately where the UI development seems to be way too time consuming. In this case, the "Business Rules" on the server-side are much more complicated than the presentation aspects as far as a Computer Science or complexity perspective.
I've found myself scratching/banging my head against the wall with problems with behaviour that differs from the intuitive approach all the way to being a black hole of time waste and poor documentation, where I might be trying to get a simple UI element to line up correctly.
I'm not complaining; I understand there are complexities and a wide audience to support with web development, but I am perplexed by how long it takes to do what seems should be the easy part compared to how long it takes to write the code with complex logic, math, science, etc.
Question
What are you thoughts and personal experience to go from concept to reality with web development and to do this rapidly, or at least in a way that you can have a sense of how long it might take? I have purposefully not mentioned any frameworks or languages, because I would really like to here what web development stacks you use, what tools or best practices help you get things done faster, and how you end up with code that doesn't feel totally brittle and full of hacks.
Hyperbole, language preferences, and all thoughts welcome, I would at least like to get a sense of what is being used for web development that has a high success rate, even if it isn't the latest and greatest thing around.
I personally have found breaking everything up into small tasks helps.
The way I like to design web pages:
Draw out the design, or photoshop it.
Create the HTML - no CSS, no styling at all
Now add in your style - basic style, like positioning, save making the menu perfect for later
Connect to database if needed / server side code
Now add in any javascript, ajax needed
Tweak it to perfection
If you have all this broken into small tasks, when you get done with each, you feel more motivated to continue working.
Like I said, this is how I do it, and it seems to go quickly, especially since I only get about 1 to 2 hours a night to work.
The answer to this question depends on if you are working alone or leading a group.
If you are leading a group you will want to break apart responsibilities as the following:
Designers - These people should own the creation of graphical mockups and the creation/maintenance of CSS. They should own CSS as a responsibility so that they know not to create outrageous graphical mockups that cannot be created as a webpage without considerable code bloat.
Markup - These people should own the authoring of HTML, accessibility, semantics, RDFa requirements, and any other aspect associated with front end data structure.
UIT - These people should own JavaScript, efficiency requirements, content-management requirements, internal process and front-end tool/process governance, and generally own best practices for all client visible code.
Applications - These people should own server-side application code development, content management system creation/maintenance, and database access requirements. These people are application and services programmers and provide the interface to database and services personnel.
QA - These people test all business requirements of the final product in a certification environment. If errors are seen the bug/ticket should be updated and reassigned. The work is not finished until QA signs off as valid.
Business Owner - The business owner is the person/team responsible for writing the initial project requirements and making a final approving decision about the deployment of the project. This person should have no interface to the technology process outside the drafting of business requirements.
Project Manager - This person ensures that a project is continually moving forward and that milestones are completed in accordance with any deadlines. It is this person and not the business owner that is to interfere with the technology process to ensure things are getting done. This person must act independently of the business owner and must not serve as a tool to the business. The project manager must not own or recommend changes to the requirements to the technology personnel. If changes to the requirements must be made this is a one way process from technology through the project manager to the business owner.
The flow of development should be the following:
1) Designers create the graphic mockup and then reassign the bug/project ticket to the project business owner.
2) Upon business approval the ticket should be reassigned to Markup staff or rejected back to design with specific change requests.
3) Markup writes the HTML and content. Any application or database requirements should be specified by business before the project begins and the Markup team should write code for all possible scenarios. The structure of content should reflect the organization of content on the visual markup completely without regard for presentation. The ticket should be reassigned back to Design for CSS creation.
4) Design writes the CSS to add presentation in compliance with the graphical mockup they created. The design team must have access to the HTML markup to add class attributes as necessary, but should not be allowed to make any other changes. The ticket should be reassigned to Applications to complete all server side requirements.
5) Applications should create all necessary requirements for database access. Ticket should be reassigned to UIT if the prior requirements are satisfactory or reassigned back to Markup for changes/additions.
6) UIT should be the final step to write the JavaScript interactions necessary for user-interface and AJAX requirements. UIT also should proof the prior completed markup for standards conformance, efficiency, and best practices. UIT should quickly reject the project if the work is less the acceptable. If additional Applications work is required reassign to Applications otherwise reassign ticket to QA.
7) QA is the final technology stop. These people test the business and functional requirements of the final product. The project cannot be released to production without QA sign off. If a business requirement fails QA must not sign off. Upon QA sign off the ticket should be reassigned to the business owner.
8) The business owner reviews the project and determines if all requirements are achieved. If changes/additions are required they can be submitted at this time. Changes/additions MUST NOT be submitted earlier, because frequent changes delays all projects. It is the responsibility of the business owner to ensure their initial requirements are complete and specific. If the requirements are not reviewed for fullness it is the fault of the business owner and changes can be submitted at this point. It is because of this responsibility, and other associated business responsibilities, that the business owner deserves to get paid more for being less involved.
That is the most efficient manner to get the job done. Separation of duties is extremely important and adherence to the process is extremely important. If those two things fail the entire process fails and business incurs significantly increased development costs.
If you are acting on your own and not part of a team I would still follow a similar process and push the role business owner onto the client. If the client wants to make changes/additions premature to the project completion then they can pay more money by amending a change addendum to the original requirements contract. You do not loose pay from increased labor because a client cannot make up their damn mind. If that is upsetting then the client can pay even more money for a contract cancellation. This is not mean it is business. If your time is not a valued commodity then you should not be in business as on your own.
I've been using the .NET stack for about 5 years, the ASP.NET MVC stack for about 3 months, and old ASP for 4 about years.
The key to dealing with complexity is mitigating it. In your code, always abstract away complexity to a reasonable level. For example, say there are 10 steps to placing an order. In that case, at a higher level, you would have a method 'SubmitOrder'; under it might be 10 method calls for inserting appropriate records, dealing with inventory and so on. In each of those 'business' layers, you can just deal with these business problem, and even below those layers, you would deal with data and mechanical details. The benefit to all of these layers is that you make each layer deal with a chunk of the work, and as you go up closer to the UI, you have an 'interface' that makes sense to the UI and the way the application needs to flow.
I think you're a little mistaken about UI development. UI development is difficult and usually underestimated in its importance.
There's a need to know the basics - before you jump to HAML, know your HTML so you know what you're abstracting away. Before you jump into jQuery take the time to learn JavaScript basics - you don't need to be a pro, but when you need to add some numbers together you should not go looking for a plugin. Have a good understanding about how to style things with CSS. There's a lot to topics and technologies to learn to be a competent web UI dev.
That said, for greenfield development Rails is pretty sweet. Pick jQuery. And don't choose a platform that hides how the web really works.
I use UI designers. They are excellent for that sort of thing.
I craft my application requirements around what is practical and sometimes easy in terms of front-end work.
My companies does mostly .NET development and we have been successfully using the 'net-tiers' templates for data access layer. The templates are loaded into CodeSmith code generator and pointed against a database. The end result is anything you could possibly think of. It'll generate your DAL, webservice, winforms UI library, web UI library, a sample website and administration tool and more. A great tool to save some development time. Check it out.
As far as actually working on UI, i think it may benefit to actually hire a professional. We have a professional designer who does some contract work with us. All that we do is wire up the UI to our UI components and code.
To speed up getting an HTML page that looks like you want:
First, decide on a design and draw what you want it to look like using a graphics program (if you've got a UI designer they do this step). Then, write static HTML and CSS that matches what you've drawn. Once that's done, write code that outputs HTML that matches the format that you've decided on.
I did this for a pretty complex set of states for a web app, and found that first writing HTML and CSS by hand, without having to wrestle with your server program, makes it go much faster.
The common mistake web developers do most often is that they start writing markup without thinking what they are making and How it will look like. Later when they stuck in any problem then they have to restructure the markup several times which also affect the design too and not an efficient way.
Good developers have habit to design first then develop. What I mean to is it is better to design your website in Photoshop first the start coding. This help them a lot because they knew what they are making and what they can do later as well.
After planning let's talk something about the coding environment. Of we have a nice setup for web development then it will increase our productivity. The major part is Text Editor .It is very important to have a nice Text Editor because we do most of our work on Text Editor. Text Editor plays an important role in increasing our productivity. Well,You can't use notepad or notepad++ in 2019 . They are outdated. The best Editor in 2019 is VSCODE and Sublime Text.
Personally I use sublime Text with some plugins.
Another important part of web development is version control. You can use git for this purpose. There are many online free cloud storages too like github , bitbucket etc. on which we can save our code and access it from any part of the world. Now these days many people are remote workers and to share their work they use git. It is not only helpful in web development but it is also helpful in every software industry. This also allow you to try different styles by simply making branches without messing up with the code.
The least famous but most important part of any software developer or web developer is to use comments while coding because on small project it is very easy to find a particular piece of code but when you are working on large projects or work with a team then comments are necessary because the other developer might not be familiar with your naming conventions. If we use comments then you know what this particular code do.
In last one more thing I would like to suggest for web development is to use browser's developers tool. They are truly awesome and very helpful in finding an error. Developers tools contain console, live code preview, responsive website preview with various mobile devices options and much more.
Some useful plugins for web development are:
Emmet
Prettify
Color Picker
File Icon
Git gutter
Integrated Terminal
Hope you get the answer of your question
Developers are extremely prolific individuals. They are continually improving their tools in order to increase their production and produce better outcomes faster.
For over a decade, I've been doing full-stack web development. One of the most difficult hurdles I'm having right now is that I need to focus on a range of tasks in a short amount of time, from designing user interfaces to deploying web applications.
To speed up my output, I use a number of technologies and frameworks. For UI, I usually use Bootstrap 4 and Bulma for most of my projects when it comes to building responsive web apps.
As I continue to focus on developing a variety of Web applications, I've seen that there are certain similar themes that I've noticed when doing so:
Consider the following example:
User Interface for Login/Signup/Forget Password
Layouts like a dashboard
Layouts for User Profiles
Form of Configuration
The list could go on and on.
I believe that most full-stack developers have come across the same UI pattern when developing their Web Apps UI.
So, to make the above procedure go faster, we created a simple tool that allows you to drag and drop — pre-made Bootstrap 4 components like Signup Form with Cover Image, Login Form, Dashboard Layout, and so on...
But wait, there are already a number of comparable Bootstrap builders out there, so why do I need to create another one?
The majority of Bootstrap Builders are focused on creating websites, however we choose to create this specifically for Creating Faster Web Apps UI.
Other aspects have also been taken into account.
Because drag and drop is sometimes a limiting choice for developers to modify the layout, we created an in-built full-featured Code Editor that allows you to generate numerous HTML, CSS, and JS files to extend the UI of your Web Apps.
In conclusion, you may make use of the following advantages.
Drag & Drop — Pre-Made Bootstrap Blocks — Dashboard Layouts, Signup
Forms, *Login Forms, E-Commerce Order Layouts, and more
Drag and Drop — Default Bootstrap Components to improve the layout
even more, such as Buttons, Cards, and so on...
Create/Edit UI enhancements using HTML, CSS, and JS.
Use the entire project for production or future development by
downloading it.
Publish to Netlify to show off your work to potential clients.
I hope, you enjoy using this tool for creating responsive Web Apps UI faster.

Where can I start about designing a website

I want to design a website but I don't know from where to start.
Is there a beginners' guide to start with?
How much dedication do you hope to provide? If you merely want to design a single website, quickly and dirty, there's a plethora of open source web templates available online, with clean and basic HTML/XHTML design strategies that you could modify, and provide content for.
Such as this and that.
Alternatively, if you would like to design your own websites from scratch and have full technical knowledge in the field (the proper way). Pick up a book or two on HTML/XHTML/XML, with documentation on content management systems, php, etc.
You'd soon find that in the beginning your development would be gradual and at best, slow. If you put in sufficient effort, you would find that you get to the point where you can quickly design sites confidently, which best illuminate your content.
You should be familiar with this and this
Try this Web Design from Scratch
I understand by website you mean some kind of web-app. And by design you mean, not just the page design but the design of the web-app. First, you have to understand the anatomy of a web-app. The major components are:
Database is used to store user and application data for long term. A database provides query functionality (SQL), backup on one installation and restore on another, triggers when a data entry changes, and constraints that must be satisfied by the data tables.
Web Server, also called Http Server hosts the web application.
Web Browser such as Internet Explorer or Firefox.
When a user types a URL into the web browser, the web server forwards the URL to the corresponding web application. The web application performs the needed tasks (which may involve reading or writing into the database) and returns a new html page to the user via www.
Some components of the web application are:
Database access objects are representations of objects that encapsulate interaction with database tables.
Business Logic is the main logic of the application. Here we implement the search functionality using Lucene library, for example.
Action Handler handles a http request received from the user, for example when she types a URL or when she clicks on the "submit" button. These are Http GET and POST requests. The Action Handler uses the business logic to drive the actions.
Data view on the web brower is constructed using some template library (which usually produces javascript user interface code for the web browser). For interactivity one may use Ajax techniques.
Almost all web-apps separate the model, view and controller of a web application. The view deals with the display, the model deals with data and the controller deals with control/functioning. See http://www.uidesign.net/Articles/Papers/UsingMVCPatterninWebInter.html.
Several frameworks implement MVC. The most easy ones to get started are Ruby on Rails and Django (over which an open source social network called Pinax too is written). There are much more comprehensive frameworks and libraries in java too (for a single web appl you may need to join several of these libraries), such as spring, webwork, tapestry, lucene (for search), sitemesh (for page decoration). Many java web apps run on tomcat web server and with mysql database.
I started with http://w3schools.com. Make sure you're using Firefox and the Firebug addon. Get your hands dirty then get familiar with the web design community.
I have CSS Mastery by Andy Budd on my desk and it's a good, readable, short, yet deep guide to CSS.
Don't Make me think has also become my mantra of web design.
Overall, you're going to produce a lot of crap--as I have--before you get good. If you have someone to look over what you're doing that'll be the best help. Personal drive will matter the most in the long run though, so stick with it and keep learning.
Liz Castro has a good book too.