One website, one domain, but two different technologies? - legacy

I need advice.
I inherited a website that's been around a long time. The website gets a lot of organic traffic from Google. The business and website owner is upgrading the site to make the content more manageable. At the moment, a wordpress CMS powers half the site. Physical html pages make up the remainder of the site. Here's a summary:
1) Guide section which consists of a php wordpress driven blog found at http://mysite.com/guide. Individual pages in the guide section have urls such as http://mysite.com/guide/4930-hello-world or http://mysite.com/guide/489-welcome-to-my-site. The business owner spent 2 months populating these pages and is reluctant to scrap it for another system.
2) E-commerce section which consists of a thousand static/physical product pages. The product pages are NOT dynamically driven and no url rewrite rules are involved. The pages have urls such as http://mysite.com/products/239123-sofa.html and http://mysite.com/products/23-office-desks.html
The owner wants to use a non-PHP ERP or CRM solutions to power the website's e-commerce section and streamline some of the business' accounting, inventory, marketing and work-flow operations.
I have never worked with ERPs or CRMs before. Some questions I have are:
1) Is it a good idea to have one website under one domain driven by two different technologies? Wordpress manages pages such as http://mysite.com/guide/4930-hello-world while a Microsoft application manages pages such as http://mysite.com/products/239123-sofa.html. As mentioned earlier, the business owner is reluctant to scrap wordpress because he put considerable effort into populating it.
2) What challenges will I experience implementing url-rewrite rules (because it's two technologies under one domain, but different sub-directories)? I need to make sure the website retains its Page Rank and SEO goodies.
3) What server configuration challanges will I experience?
I've never replaced a legacy system of this magnitude on my own before. I appreciate any advice or feedback you guys can offer. Also let me know if there's anything else I should research.
Thanks

You can think of a configuration where you have separate logical/physical back-end servers for each system. Then you can have a front-end proxy (for instance Apache with mod_proxy) serving all the requests and separating them between the different back-ends.
This will also work as an application level "firewall" protecting you from unwanted requests, since you will only forward URLs that you recognize.

With regards to #1:
Big picture, while it's tough to say with the level of detail you've specified I'd say you'll probably want to make the system homogenous: use one technology and permanently redirect the legacy pages. It'll be much more cost-effective to maintain. Port the legacy WordPress content over to a new, single system.
With regards to #2:
If you're using ASP.NET, you can write an implementation if IHttpHandler to do the URL redirection, issuing an HTTP 301 (permanently moved) so that Google knows where the content has been moved to. I'd imagine other technologies have similar capabilities.
With regards to #3:
If you're using a single technology, this issue should be alleviated.

Related

Deploying / Handoff a website to client using google domains and github pages

I am starting a new career as a developer and I am trying to offer my services to shops in my area for free to use as my portfolio. My question is, is it okay to deploy/hand off a website to my client using google domains and GitHub pages? Since it is the cheapest way to deploy a website?
What is the downside of doing so, or should I just suggest using a hosting site such as Hostgator?
I have created a website that is ready to be handed off.
Here are my thoughts:
For a simple static website that doesn't have server-side scripting (such as PHP, etc.) GitHub pages are a fine route for deploying your website.
Another factor to take into account would be the GitHub pages limits.
No larger than 1 GB
Bandwith limit of 100 GB per month
Limit of 10 builds per hour (excluding custom actions workflows)
Other options
AWS
Google Cloud
Heroku
"I am trying to offer my services to shops in my area for free to use as my portfolio."
Based on this alone, I will tell you that GitHub pages are probably the most ideal way to go for a portfolio. If your website is more complex, however, I would go for one of the options I listed above. Since GitHub pages is free and very easy to use, though, I do recommend it. Say your website grows in complexity and you begin to feel you need more wiggle room/flexibility to control how it's hosted, you can always start using something else.
I would personally, at the very least, use GitHub pages as a starting point for a static site.

First Website - Security Concerns

I have taught myself HTML/CSS and some JavaScript as a hobby, and have reached the point where I am comfortable building a clean simple website. The company I work for (we do nothing related to coding) has a website that is quite outdated so naturally I saw this as an opportunity for my first live site. I approached my Managers at work to take a look at my first mock up and they loved it and want me to revamp our current site.
The one concern they have with me being a rookie is the issue of web security. Essentially they want to make sure that the website I build leaves no vulnerability for someone to hack through our server, start editing our website, etc.
There are no interactive components to the current website. I plan to build this website with only HTML and CSS, and perhaps add some JavaScript later down the road once I progress in my learning a bit more. There are no account logins or areas to enter personal information anywhere on the site.
My question comes down to this -- what can I do to ensure that the website I build is not leaving our company vulnerable? I have done a lot of searching around Stack Overflow and other websites but I am not confident I am finding the correct information.
Details that might make a difference:
Our company website is hosted through godaddy.com
Our website is currently on Wordpress, but I will probably not use Wordpress for the new website
I greatly appreciate all of your help!
since there should be no direct interacting with the server ex PHP and AJAX only HTML CSS and js there should be no security issue, as js and HTML can't edit/delete/read server files, only server-side programming can. eventually you may want to invest in PHP almost no website is complete without PHP or AJAX. take me for example, I used to use just HTML, CSS, and js. then I wanted to do more.. log form answers to a file, show different pages based on the query string. these things are virtually impossible in a HTML, CSS, and js only environment. I would also recommend atleast getting free protection from cloud flare.. they give free shared hosting wildcard SSL, and free DDOS protection, granted for a business you might want to invest a little more than free but free would be a good starting point
also you could pay someone to test the vulnerability of your company, take for example OurMine. a legal hacking group.. you pay them to test your security and they do just that. (they claim they don't log anything that they get) otherwise there might be vulnerabilities you may not be aware of
When you are concerning about just AJAX call, I would help you out for following suggestion regarding "Function access rule from AJAX".
By adding "_" as a prefix for Function name, we can prevent function to be called from The Web publicly. This is the best practice when we need some specific function to be accessed via AJAX only.
Kindly, refer my answer given in other question.
[Website Security: How to learn?

CMS without Back end or database

Will i be able to use wordpress CMS without a Database or back end of a website, cause the website's purpose is just for advertising or displaying the company's contents
Whether using a CMS without a database is worthwhile for your own project depends on a range of different factors. The advantages, as well as the typical problems of non-database CMSs, are summarised here:
CMSs without databases are usually quite plain and are limited to the most essential features and therefore users don’t need much of a familiarisation period.
Web project backups are easily taken care of since no complex database backup is required, so data just needs to be downloaded from the webspace.
The direct transfer of information without having to detour over a database means there is a shorter loading time and faster access to the web project.
A small CMS system generally doesn’t require much webspace and doesn’t demand any special requirements from the hardware.
As well as numerous advantages there are also some disadvantages of CMSs without databases:
The possibilities of non-database CMS systems are limited, which is why the systems are best suited to smaller projects with minimal static sites. Dynamic websites cannot be created without databases.
Since simple CMS systems usually only offer small communities, the user is often left alone with questions and problems and has to sort through documents to work it out themselves.
The often unavailable codes and minimal distribution of CMS software can mean that the simple CMS becomes boring for the user since there is less chance of development.
Not working in a structured and neat manner on a simple content management system could make it difficult to find specific content again.
What kind of projects are simple CMS systems suitable for?
With the list of pros and cons of non-database content management systems you could assume that this software solution isn’t suitable for managing content of every project. The advantages of non-database systems only really materialise in small web projects. Deciding to pass on using a database has a positive impact on the performance, but a negative one on the structure of bigger web projects. Also the use of dynamic web pages with a CMS without database isn’t possible. Users that are planning a web project with constant updating and heavy interaction with website visitors, shouldn’t opt for a simple CMS system without a database. The same applies for owners of bigger websites whose complex structures prove too much for a non-database content management system.
On the other hand, there are projects that benefit from using a CMS without a database: small websites, which are built using simple structures and don’t have a lot of pages, can be quickly created with this CMS and will impress visitors with fast access to the information they are looking for. These CMS systems are best suited to small businesses or freelancers who want to introduce their range of services. Running a blog will also work on a small CMS system.
A considerable advantage of such a lean system is that no hardware is needed to operate the database server, so the user saves money and also doesn’t need any laborious backups. Less experienced users can benefit from a clear structure and easy start.
A CMS without database is suitable for:
Small and medium-sized homepages
Operating blogs
Introducing a range of services (businesses, freelancers)
Simple CMS systems are not suitable for:
Online stores
News sites
Online services
Websites with lots of multimedia content
Recommendation of a simple CMS:
GetSimple CMS
The cleverly-chosen motto of the non-database GetSimple CMS is “GetSimple has everything you need, and nothing you don’t”. The GPLv3 licensed open source software GetSimple CMS is characterised by its minimalistic structure, which offers the essentials and can be expanded with plugins. Since the software code is freely accessible and can be modified, the user can adapt the CMS system to suit needs. Data is saved on the webspace in XML format. Further information on this CMS includes:
5-minute installation
Intuitive user interface
Undo function for all modifications
Creation of numerous backend accounts
First class documentation (Wiki)
Very active community
HTML5 template
no you will not be able to use wordpress without a database, the database stores everything
This is possible with Bodyless CMS, it dosen't require any database, backend. A Front-end only CMS build with angular 6. You can check this out in github (https://github.com/chaitanya11/BodylessCMS). Currently it supports deployment only in AWS. It has inbuilt web building framework (GrapesJs) to design web page. You can check this article (https://medium.com/#chaitanya.garikipati123/bodylesscms-e2a83a841cd).

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.