Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Business

Scott Smith
seal-mask
.a{fill-rule:evenodd;}techdegree
Scott Smith
Front End Web Development Techdegree Student 8,492 Points

How do I create a Youth member management system?

I'm looking to create a Web Based membership management system for a youth program. This means the member I am tracking will be the youth involved in the program with all correspondence sent to the parent/guardians. Could some one list some basic thoughts on where to start or how to proceed?

Roy Penrod
Roy Penrod
19,810 Points

We'll try to help you think through the process, but we're going to need a little more info to really help.

(1) Where are you at as a developer? What tools are you working with?

(2) What kind of youth program is it?

(3) Is this app only for one specific youth program? Or is it an app you want to open up to many different youth programs?

(4) What kind of information do you need to manage with your app?

Scott Smith
seal-mask
.a{fill-rule:evenodd;}techdegree
Scott Smith
Front End Web Development Techdegree Student 8,492 Points

Thanks for responding Roy. (1) I consider myself a new developer. Most of my experience is with Wordpress but am using treehouse to expand that knowledge.

(2) I don't want to give too much away but it is a national organisation promoting teaching youth core values through fun and adventure. When I mean national program, there are well over 100,000 youth participating in their local community and even several thousand overseas.

(3) I would like it to be designed for this specific organisation based around giving local leaders functionality and control over the administrative tasks at the local level.

(4) I would like to manage membership information. Basic information (name address etc.) and parents contact info. Youth can be moved around to various subgroups at the local level. newsletters and meeting information/details emailed to the parents, as well as current status of the youth (ex: paid, late, forms submitted)

I also want to make it internationally compatible, including currency. I would be designed for leaders to manage the information so would also need permission based access.

I am just no sure what languages or code i should gear my learning towards. I have some interface concepts sketched out but thats about it.

Hope that gives you a better idea.

Roy Penrod
Roy Penrod
19,810 Points

One last question and then I'll give you my opinion.

Are you working on this project as someone who can information about the platform (server OS, web server, back-end languages they are already using) this organization is running on?

Or are you working on this project as an outsider with no access to information about their platform? (You're hoping to develop an app that you can sell to the organization.)

Scott Smith
seal-mask
.a{fill-rule:evenodd;}techdegree
Scott Smith
Front End Web Development Techdegree Student 8,492 Points

I am actually a leader of one of the local groups for this organisation. From what I know, the organisations current technology solution (not available to local groups) is antiquated and almost unusable. My motivation for this is making my job of managing this information in 14 spreadsheets that must me emailed and updated but my co-leaders much more simple and dynamic.

I envision that it would be something that other local groups could use, once i figured out how to make it best work for myself, and then eventually perhaps make it available on a larger scale.

2 Answers

Tim Knight
Tim Knight
28,888 Points

Scott,

Roy definitely covered a lot of your options and he's right, this can be a huge undertaking. In terms of the Ruby on Rails world you'd like using something like Devise for your user authentication and just build out a few models to create some basic CRUD to connect these sections together. Much of the details of your front-end could always come later too if the first goal is to get everyone collaborating on the same data.

Since you have some experience with WordPress you might also consider something like https://piklist.com/. It basically let's you create custom applications on the backbone of WordPress. Your core responsibility as a developer is to just solve a problem. You could take this as a learning opportunity and build something from scratch or you look at some of your options to build on top of to first solve the problem and if you've solved it—grow it into a full application.

Another product you might consider would be something like https://fieldbook.com/ just to help you consolidate that information and get everyone working with it. Again, I'm not trying to talk you out of building something, especially if you're using it as a learning opportunity. Oftentimes however as developers we get wrapped up in the "I need to build this thing" before looking at other options that might affordably solve our problem.

Roy Penrod
Roy Penrod
19,810 Points

Ok, here's why I asked these questions.

When you design software meant to be used by one organization, you don't have to make it as flexible. It only needs to meet the needs of the one organization.

But if you're designing software that you want to open up to different groups, you want to build an app framework that's more flexible because you need to take into account more users.

I'm not going to lie to you ... you're tackling a big project. Most organizations would put a team of developers on a project like this.

As an individual, it's a great way to learn about software development and develop the essential skills you'll need to pull it off.

I just want you to understand going in that this is not a short-term project that'll take a few weeks to bang out.

At it's heart, the app is a contact manager with a lot of added functionality. So that's where I would start: Build a simple contact manager. That's a great project for a new developer.

Now let's think through the project from the front-end to the back-end.

Your web app is going to live within a web page, so you'll use HTML for the document structure.

You'll use CSS to create the look and feel of the web app.

And you'll use JavaScript for adding the user interface behavior to the web app. You'll probably want to use the jQuery library with it for the DOM manipulation shorthand and any animations you need. And that lets you use the jQuery UI user interface library for stuff like drag-and-drop behaviors.

That covers the front end. On to the back-end ...

You're working with a lot of structured data, so you're going to need to use a relational database management system (RDBMS). The most popular open-source database is MySQL.

MySQL can handle most projects, but you are doing this for a large organization, so I don't know if you'll run into performance problems with it or not.

Another popular database is PostGreSQL. It's designed to handle a huge amount of transactions, so it could be a better choice.

I suggest talking to a more experienced developer who's worked on large scale projects when you get further into the development process and understand exactly what info you need to manage.

When you talk to a structured database, you use SQL or Standard Query Language. It's just a standard way of communicating with database and it's easy to learn.

Now you need to write a back-end program or series of programs that communicates with your front-end and database. You can use a variety of languages to write a back-end program, but the most popular languages are PHP, Ruby on Rails, JavaScript (via NodeJS) and Python.

I'm the most familiar with PHP. I've written a few small server-side programs with JavaScript and NodeJS, but I plan on digging deeper into this in the future. I've written a few small programs in Python. And I've never touched Ruby on Rails, but I plan to pick it up eventually.

I don't think you're going to go wrong with any of them. My only warning is about Ruby on Rails.

Ruby on Rails is a combination of a language (Ruby) with a framework (Rails). It hides a lot of complexity from you, which is great for an experienced developer that understands what's happening under the hood, but it can seem like magic to a new developer.

When things go wrong (and they always go wrong), you'll have to figure out what went wrong. And you can't debug magic because you don't understand it.

If Ruby on Rails calls to you, go ahead and use it. There's a very active developer community for it that you can get help from.

But my suggestion is to avoid it as a first language. You want to see the complexity so you can learn about it as you go.

I think that's enough to give you the big picture and let you get started. Any questions?