Directme is a modern web directory. Users can find new websites and communities via hubs and tags. Hubs are nested categories that a user can move through until they find a topic of interest. Tags allow a user to search by keywords to find listings. Users can contribute listings with any number of imaginable tags. If the tags match a hub's nested link, the listing will be displayed there as well.
Future deployment will include:
- User accounts that can save hubs, listings, and tags in their favorites.
- Vote for the best listings in each hub.
- Sort and filter the hubs, listings, and tags.
- Become editors of a hub and currate the best links for others.
- and much, more. Check the Kanban / Project Board for a list of upcoming releases.
- ReactJS
- Express
- Postgres
- HTML5
- CSS3
- Mocha
- Chai
- Supertest
- Enzyme
- Jest
Each Component is housed within its own folder. I took the best effort to separate out reusable functions as needed. The hierarchy for the client is as follows:
- Components
- Landing Page --> // User greeted with an onboarding experience for their first time
- goBack --> // Landing-specific utility function to see the last message
- goForward --> // Landing-specific utility function to see the next message
- LandingPage2 --> // This houses the bulk of the landing page onboarding experience
- Message --> // The message that appears on the screen
- Primary App --> // This houses all of the main application
- Header
- HeaderTitle
- LocationBar --> // The breadcrumbs / location showing the deeply nested hubs a user enters
- SearchBar --> // Includes validation, calling to the API, and changing state
- Main
- AddTagForm --> // The input box, validation, API calls, and changing state for when a user adds a tag to a listing. Reusable
- CatListing --> // Lists a hub/category within the current hub. Reusable
- LinkListing --> // Lists an individual link. Reusable
- MainHubs --> // One of the major views of the website. Displays the hubs list
- MainListings --> // One of the major views of the website. Displays the listings list
- MainNav --> // Provides the user the option of switching between the major views.
- MainTags --> // One of the major views of the website. Displays the tags list
- SubmitButton --> // A button to submit links lives on every page on the application. Reusable
- SubmitListing --> // Submit form for listings including validation, API calls, state changes
- Header
- utils --> // *These are utility functions used across the application.
- Landing Page --> // User greeted with an onboarding experience for their first time
- FutureComponents --> // Components under construction for future deployments
- images
- tests
- migrations
- seeds
- src
- router
- router-service --> // all knex functions that connect the node server to the postgres database
- router --> the endpoints for the server that connect the API calls to the router-service
- app --> // the express application including all middleware and connects the router
- config --> // configuration data
- server --> // entry point for the application. Starts the server and knex database
- router
- test


