First, let's talk a bit about project management. Boring, I know. We want to dive into coding, right? But that's exactly the most typical mistake developers make, especially freelancers.
The beginning stage of the project is when the client is still actively involved, and that's the best chance for us to ask them questions and minimize the risks of something unplanned happening.
When starting the project, my first goal is to turn the client's initial description into an actionable plan with milestones.
So, here's the description of the project client (me) gave to us.
Project Description from Client
LinksLetter: General idea
LinksLetter will be a system for people to manage their bookmark links saved from the internet and then compile them into newsletter issues to be sent via external email campaign provider(s).
No need for homepage, it will be a semi-internal system, so the homepage should immediately redirect to the login form.
Also no need for any fancy design, any pre-built template or kit will be fine, as long as it doesn't look amateur.
The system will work with three "objects":
- Users
- Links
- Newsletter issues
Users
Users can register, login and reset password: typical Auth functionality.
There should be functionality to register / log in with Google.
After logging in, there should be two menu items: Links and Issues. More on them below.
Managing Links
Users can add links either via manual CRUD form.
Links should have these fields:
- URL (string, required)
- Title (string, required)
- Description (text, optional)
- Issue ID (nullable, foreign key to "issues", null until assigned to a specific issue)
- Position (integer, optional, later automatically assigned but reorderable)
- User ID (foreign key to users, automatically filled-in)
Creating Newsletter Issues
Issue, or in other words, newsletter "campaign" or "curated list" is a list of links to be sent to the newsletter subscribers.
The menu "Issues" should contain...