Project Structure
Let's begin with Project Structure.
It depends on an individual choice of how they structure their projects.
However, in this project, we'll be splitting our app into two main folders app
and features
under the src
folder.
For the assets like images, logo, etc. We'll put them into the public
folder.
We'll use a global CSS file styles.css
(located in src/app/layout
) and we store our index.js
file in our src
folder.
src
โฃ app/
โฃ features/
โฃ index.js
โฃ reportWebVitals.js
โ setupTests.js
Complete Structure#
public folder#
public/
โฃ assets/
โ โฃ categoryImages/
โ โ โฃ culture.jpg
โ โ โฃ drinks.jpg
โ โ โฃ film.jpg
โ โ โฃ food.jpg
โ โ โฃ music.jpg
โ โ โ travel.jpg
โ โฃ logo.png
โ โ user.png
โฃ android-chrome-192x192.png
โฃ android-chrome-512x512.png
โฃ apple-touch-icon.png
โฃ favicon-16x16.png
โฃ favicon-32x32.png
โฃ favicon.ico
โฃ index.html
โฃ manifest.json
โ robots.txt
src folder#
src/
โฃ app/
โ โฃ api/
โ โ โ categoryOptions.js
โ โฃ common/
โ โ โฃ errors/
โ โ โ โ ErrorComponent.jsx
โ โ โฃ form/
โ โ โ โฃ MyDateInput.jsx
โ โ โ โฃ MySelectInput.jsx
โ โ โ โฃ MyTextArea.jsx
โ โ โ โ MyTextInput.jsx
โ โ โฃ modals/
โ โ โ โฃ ModalManager.jsx
โ โ โ โ ModalWrapper.jsx
โ โ โฃ photos/
โ โ โ โฃ PhotoUploadWidget.jsx
โ โ โ โฃ PhotoWidgetCropper.jsx
โ โ โ โ PhotoWidgetDropzone.jsx
โ โ โ util/
โ โ โ util.js
โ โฃ config/
โ โ โ firebase.js
โ โฃ firestore/
โ โ โฃ firebaseService.js
โ โ โ firestoreService.js
โ โฃ hooks/
โ โ โฃ useFirestoreCollection.js
โ โ โ useFirestoreDoc.js
โ โ layout/
โ โฃ App.jsx
โ โฃ LoadingComponent.jsx
โ โฃ PrivateRoute.jsx
โ โฃ ScrollToTop.jsx
โ โ styles.css
โฃ features/
โ โฃ auth/
โ โ โฃ AccountPage.jsx
โ โ โฃ LoginInForm.jsx
โ โ โฃ RegisterForm.jsx
โ โ โฃ SocialLogin.jsx
โ โ โ UnauthModal.jsx
โ โฃ events/
โ โ โฃ eventDashboard/
โ โ โ โฃ EventDashboard.jsx
โ โ โ โฃ EventFilters.jsx
โ โ โ โฃ EventList.jsx
โ โ โ โฃ EventListAttendee.jsx
โ โ โ โฃ EventListItem.jsx
โ โ โ โ EventListItemPlaceholder.jsx
โ โ โฃ eventDetailed/
โ โ โ โฃ EventDetailedChat.jsx
โ โ โ โฃ EventDetailedChatForm.jsx
โ โ โ โฃ EventDetailedHeader.jsx
โ โ โ โฃ EventDetailedInfo.jsx
โ โ โ โฃ EventDetailedPage.jsx
โ โ โ โ EventDetailedSidebar.jsx
โ โ โ eventForm/
โ โ โ EventForm.jsx
โ โฃ home/
โ โ โ HomePage.jsx
โ โฃ nav/
โ โ โฃ NavBar.jsx
โ โ โฃ SignedIn.jsx
โ โ โ SignedOut.jsx
โ โฃ profiles/
โ โ โ profilePage/
โ โ โฃ AboutTab.jsx
โ โ โฃ EventsTab.jsx
โ โ โฃ FollowingTab.jsx
โ โ โฃ PhotosTab.jsx
โ โ โฃ ProfileCard.jsx
โ โ โฃ ProfileContent.jsx
โ โ โฃ ProfileForm.jsx
โ โ โฃ ProfileHeader.jsx
โ โ โ ProfilePage.jsx
โ โ store/
โ โฃ actions/
โ โ โ โฃ actionTypes.js
โ โ โ โฃ authActions.js
โ โ โ โฃ eventActions.js
โ โ โ โ profileActions.js
โ โฃ reducers/
โ โ โ โฃ asyncReducer.js
โ โ โ โฃ authReducer.js
โ โ โ โฃ eventReducer.js
โ โ โ โฃ modalReducer.js
โ โ โ โฃ profileReducer.js
โ โ โ โ rootReducer.js
โ โ configStore.js
โฃ index.js
โฃ reportWebVitals.js
โ setupTests.js