# Product Planning Binh is building a website to connect freelancers with individual or businesses that are looking to hire for certain jobs. ## 1. Fundamental features ### Frontend - Binh starts up a React App and clean it up. - Binh creates routes like Homepage, Not Found page, Protected Page, Login Page. - Binh creates general layouts and content for all 4 pages. - Binh creates a form component in Login Page. - Binh creates layouts for the Homepage with 3 main components: Main Header, Introductory Cover, List of Latest Jobs and List of Popular Freelancers. ### Backend - Binh creates an Express - Mongo server. - Binh creates a User modal with the required information (name, email, password, role, industry, skills, company, avatarUrl, about me, jobs done, listings). - Binh creates register/ login API routes for /users. - Binh creates routes to CRUD (Create (POST), Read (GET), Update, Delete) users. - Binh tests authentication with Front-end. - Binh designs a Job schema in a paper, that list out: - What information a job should have: Lister, Title, Industry, Job Description, Job Photo, Listed Date, Status. - What fundamental actions freelancers can do with jobs: Industry Filter, Listed Date Filter. - Binh uses the dataset he found online (Kaggel), then changes it to match his schema. - Binh actually codes the Job Schema and creates the Job modal with the required information above. - Binh creates routes to CRUD jobs. (without any authentication for now) ### Testing - To test the app: Binh fetches data from the backend via the localhost server and renders the UI of all jobs. At this stage, Binh only expects to GET all jobs, he doesn't need other functions like Update, Create or Delete. ## 2. Core features ### Frontend - Binh creates a categorized job list and filter function for the Homepage. - Binh creates layouts, content, and components for the User Profile & Account Setting Page - UI without testing. - Binh creates layouts, content, and components for Create New Job Listing Page - UI without testing. - Binh creates layouts, content, and components for Job List Page - UI without testing. - Binh creates layouts, content, and components for Freelancer List Page - UI without testing. - Binh creates layouts, content, and components for Detail Job Page - UI without testing. - Binh creates layouts, content, and components for Detail Freelancer Page - UI without testing. - Binh creates layouts, content, and components for User Profile Page - UI without testing. - Binh continues to connect users' interaction throughout frontend and backend with API service and Redux, for each page ### Backend - Binh creates a Bid modal with the required information (Bidder, TargetJob, Price, Status) - Binh creates a Review modal with the required information (author, target, rating, comment) - Binh creates routes to CRUD reviews and bids. - Binh modifies all the /jobs and /users CRUD with Authentication. At the same time, testing via Thunder Client. - Binh deploys Backend on Heroku. ### Testing - Finally, Binh tests the interaction between the frontend and backend with the Heroku link. - Binh looks for bugs from the front-end and fixes them. - Binh deploys the front-end on Netlify. - Binh submits the project and gets ready to be a Web Developer. ## 3. Cool Stuff - Binh wants to allow users to be able to request directly to a freelancer that they are prefer. - Binh wants to implement a messaging/commenting system for users to interact easier. - Binh consults his mentor for guidelines, as well as research, and read through the docs by himself.