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
