Building a website with "catalogue" pages - database

I want to build a website that has the ability to search for products based on certain criteria.
Websites like Newegg.com are a perfect example.
What I want is the part that allows the website to list the products on the website dynamically on its pages and if there are too many products to list it will create pages(1,2,3).
I want to find some resources onto how to do this kind of stuff but can't formulate my question right to find it. What are some of the good resources? Complete beginner, never done this.
For a beginner would you suggest using ASP.NET for such kind of task?

I recommand you to use PHP and MYSQL, it's easier and there are a lot of ressources and examples.

I will not suggest any programming languages. Which one is easier, is an matter of opinion and perspective. Its up to each developer to draw his own conclusion.
But for a new developer you should probably leverage some existing solutions. Look for a cms solutions (content management system) like joomla, that already have a solution for a use case like catalog listing.(Looking for samples will help)
For you to come up with a good enterprise solution, you need to optimize data store, have some mechanism like Lucene searching to enable faster searching experience and the complexity does not stop there. ( no matter what language you use)..

Related

Trouble picking a DB for my use case. Any help/insight would be appreaciated?

I'm kind of new to designing my own full-stack projects, but I'm designing a little app for my own learning where I store a user's weightlifting data that they can enter and view in a web app.
Eventually, I want to scale up to users being able to view, share, like, etc. other peoples progress (kind of like Strava/Nike+Run Club for lifting) - what kind of DB would be a good place to start?
Right now, this is sort of a portfolio app. Obviously, if I decided to scale up, I can change and migrate to better alternatives. So would a NoSQL or RDBMS work just fine? If so which one would be cool/relevant to work with? What should I consider maybe?
I should mention that I am using React JS and Next JS as my front-end frameworks, along with Node JS and Express JS in the back. Perhaps it's overkill, but it's cool to learn!
If this is one of your first full-stack apps then maybe focus on learning first and world domination scale-up/out later :) (I totally agree with what #Hans said).
NoSQL and relational database approaches are different and suit different use cases, so if you want the best fit I suggest researching those differences first, and then apply what you learn to your solution and what you think is best.
I also suggest you put some kind of dependency inversion (DI) in between the database and your logic, so that you can swap out different databases without affecting the rest of your application too much. One of the biggest learnings you'll get with a project like this is not so much the initial design and build - but how to deal with the changes you'll want to make later. Making non-trivial system changes is a great way to test your architecture :) Having DI in place will help you massively here.
Personally I find SQLite a great option for hobby apps - it's free, there's good documentation and a strong user community, and you will be able to implement relational and NoSQL databases using it.
Depends on what you want to learn. RDBMS are everywhere so
I would recommend that you look into PostgreSQL, it has a great set of features and you can do almost everything with it, and has good performance to.
But if you are more interested in NoSql, go for it.
If you want to Implement more complex relationships between the yousers, a Graph DB would be a great fit.
For learning purposes it often the best to not over analyse and just to start working, the rest comes with experience.

How to understand the differences of Web Frameworks, Databases, and Libraries?

Where I stand: I am a junior in college. I have a solid background in Java and C++. I've been coding websites in JavaScript, HTML, CSS, and PHP (using MySql databases) since middle school. I have only just uncovered the magical box filled with these mysterious "frameworks."
My Predicament: After reading in my spare time wikis, blogs, and StackOverflow questions week after week for the past few months, I feel that I am no closer to understanding the items in this ominous list and how they relate to one another.
Yeoman, Grunt, Linemanjs, Bower
Nodejs, Go, PHP
Mongodb, Couchdb, MySql
Angularjs, Ember, Backbone
Terms like: boilerplate, scaffolding, frameworks, etc...
What I am asking: I understand that explaining any one of the above would be a question too big for a single Stack Overflow question, but that's not what I'm looking for. What I am looking for is a guide that explains in-depth what each of these groups are used for and if/how they can be combined (ex: using Angularjs with Nodejs). I am happy with a link if an article already exists, but I have yet to find an article that covers all of the above.
El Fin: I love learning new languages (especially for the web), but right now I feel like I'm blinded, running around in circles like a chicken with its head cut off. A shove in the right direction would be great :)
I'll put this in as an answer to help clarify why this is too broad.
I think that the GREAT BIG point you are missing is that there are specific reasons someone chooses a particular framework or server environment when they start a project.
This is all dependent of a boatload of things that like budget, knowledge, availability, expected scope of the project, etc... It also may come down to, "I'm starting this new project, what is available in this work environment for me to use?"
Then you don't really get to choose. You get what you get.
So what's the best package of technologies to use? That SO depends on what you're doing.
Example: If you are building a simple site for a local store that just needs a few pages, and you want to keep your costs low. A simple LAMP solution would work fine. But if you want to design the next Facebook, even though the core of the system could be build using all LAMP (and it in fact IS), you will need MUCH more powerful servers, and MUCH better and more efficient coding. Not to mention a boatload of server space for both the site AND the database.
In many cases, when you see people pooling together what might be considered obscure technologies, all they really break down to are collections of libraries. It's like choosing JQuery over some other JS library that essentially does the same thing. One may be better than the other. But you go with what you are comfortable with.
So, when you are asking about how, why, and in which way, do people combine technologies together, there is no way to answer that at all. Other than to say, it's specific to their needs. And that's about it.
Reading articles that compare all these different things together will only give you an idea of what they are capable of, and what their limitations are. In the end, it's always a matter of opinion what is better. Otherwise we would all be coding with the same thing.
For my part, I prefer PHP over ASP. I prefer working straight out of a text editor than using an IDE or any MVC framework. I use jQuery where it's needed, but don't over use it.
But that's just me.
And I'm sure this still didn't answer your question.

Development tools for my database managed website

I am planning to develop one website which should have following features
Database integration
online payment system
forum
I need suggestion for my following questions before I will proceed to develop my site.
Is there any any single development tool which can provide me one webserver + mysql database + user login + java-script support + webpage design + online payment system and forum and easy site maintenance ?
What best practice to start development of this type of project?
How much effort it need to maintain this type of project?
"database integration" isn't really a feature - it's the tool you use to deliver your features. A feature might be a shopping cart, or a product catalogue, or a structured navigation system, etc.
In order to talk to a database, you almost certainly need some back-end code to be running, and you need to be able to program.
Yes, there are frameworks/tools that accelerate this, but you do need to invest at least in the basics of learning how to code.
Alternatively, if what you really want is to build an online shop, sign up for a "software as a service" offering where all you have to do is configure the product.
Sounds like you could use a framework to do your project with. Take a look at http://www.drupal.org.
If you're including an online payment system then you need to ensure that it's high quality, developed by people who know how to properly secure such a system. You should also be looking for a solution that handles pretty much everything you need it to do or that allows you to plug in modules for additional functionality rather than modifying solid code. There are so many ways for a developer to foul up even the best designed system that it's best to just leave it alone unless you're fully up-to-speed on secure coding guidelines.
IF what you really need is a way to sell things, and content to manage, then what you're looking for is a shopping cart with content management capabilities. There are plenty of good ones out there, and you should Google them. We went with the AspDotnetStorefront because it suited our needs, and was PACB certified, but there are plenty of others out there. Shop around if this is the type of thing you're looking for.
That said, you can get a good framework that has shopping cart options, and also the ability to add/modify modules to provide functionality with DotNetNuke. There are a wide variety of pre-existing modules to choose from as well. And you certainly can't beat the price on the free version. Developing for it takes some getting used to (there's a learning code even for experienced .NET developers) but it's pretty flexible.
Edit - I realize I'm only offering .NET suggestions, but you didn't mention what development tools/language you are comfortable with, so I'm mentioning the ones I've worked with. There are good (some arguably better, some arguably worse) Java and PHP equivalents to the suggestions I'm offering as well.

How can I develop a database for users to access via a browser

Years ago (pre-web) I used to be a Fortran developer (yes it was a very long time ago!) but these days I run a small non-IT business. I would like to develop a database application for my clients to access via a browser (or maybe down the line via a mobile phone). I haven't done any programming for a while apart from some VB macros in Microsoft Excel. I would be grateful if anyone could suggest the best language/technology to learn to get me heading in the right direction.
As Neil said in his comments there are dozens of different, valid answers to this.
Usually I would suggest going with a language you already know, but neither Fortran or VBA are really suited for this task, as far as I know.
Personally I would suggest Django, which is a web framework written in Python. It simplifies many common tasks and it is very well documented.
But there are many more possible solutions.
Before I started with a framework I'd break the problem into pieces. If you've never done anything with a database before you'll find that challenging enough without piling web or mobile on top of it.
Model your problem and get a good object or data model in place. Test that thoroughly without thinking about UI. Once you have that, perhaps you can expose it as services that any UI can call.
You'll quickly become overwhelmed if you try to do it all at once.
Here's another thought: If these are paying customers, why not do yourself and them a favor and hire someone that knows how to do this? It's great that you used to write Fortran, but if you haven't kept up you won't be doing your business any good by putting out a bad first effort for customers to see.
Do it right - get a professional. Do your learning on your own time.
You can use ASP.NET and SQL Server to get something online that will allow users to edit a database table fairly easily. They've simplified it to the point where you can drag and drop the necessary controls (GridView and a SqlDataSource for instance) and define your datasource in a wizard for most simple table CRUD functionality. Basically give users the ability to edit a table without writing any code.
If you need to do something a little more difficult it's easy to write code that will add functionality to the original drag/drop stuff you did.
There are lots of good resources out there for asp.net and C# also, so it will help you get up to speed quickly.
Keep in mind that I work almost entirely with .NET/SQL Server so my opinion will be slanted towards them...

Ways to get past the Inner-platform effect while still building highly customized web apps?

Feel free to answer the question in the title as generally as I posed it, I offer some more details and specifics below.
Currently I develop and maintain a somewhat legacy business app (ASP/SQL) that is highly customizable allowing for moderate to full customization on: custom fields, forms, views, reports, actions, events, workflows, etc. This customization is necessary in the domain we develop for and has allowed us to build a niche.
I have been reading up on the inner-platform effect and ways of implementing high level user defined customization and have concluded that we do suffer from many of the inner-platform effect problems because essentially we have created a high level abstraction on top of the SQL. The organization of custom fields is implemented in a similar way to the approach found here
http://blog.springsource.com/arjen/archives/2008/01/24/storing-custom-fields-in-the-database/
We use something similar to the meta database method described in that article. All customization is built around this approach and in many ways we suffer from database on top of a database.
The end result is something that looks fantastic on paper yet the more features are added and custom coding is done for clients the more of a mess everything becomes. It seems that the more I read the more I realize this is somewhat of an anti-pattern. It also seems that the more I try to read the more I find so little has been written on the topic. Anyways, I am trying to learn modern approaches to this problem and trying to find more discussion/articles on the topic. Are Database systems such as CouchDB relevant to this type of application?
My question is clearly pretty general. It seems like there is a lot against this kind of application in favor of just "knowing and defining your domain better". Are there any good/better ways to implement this kind of application? I'm not looking for black and white answers, and any further readings on the subject would be fantastic. Thanks for any help.
My answer is be conscious and clear about what is for a plugin to do and what is a user setting. In that case, your platform and your settings are different. Your application provides basic services and is unabashedly a platform. It may also provide an application built on that platform.
So in that case you focus on programmer interfaces instead of implementation possibilities.
The standard advice in CS is to create another level of abstraction, not sure if that's not the problem here.
The only advice I could give is to push as much functionality onto the database, given it's the platform. SQL Server supports custom functions, fields and stored (SQL) procedures.
Either that or try to pull repeated functionality into separate functions in ASP.

Resources